home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1996 January: Mac OS SDK / Dev.CD Jan 96 SDK / Dev.CD Jan 96 SDK2.toast / Development Kits (Disc 2) / QuickTime / Programming Stuff / QuickTime XCMDs / The QuickTime XCMDs (CG) (.txt) < prev    next >
Encoding:
Common Ground  |  1994-12-21  |  461.1 KB  |  4,335 lines  |  [CGDC/CGVM]

  1. This program requires Microsoft Windows.
  2. $                                        Z
  3. GOTOBOX
  4. PRINTDLGBOX
  5. UPGRADEBOX
  6. GET_INFO
  7. PRINTDLGMOD
  8. CGMINIVW
  9. ___EXPORTEDSTUB
  10. KERNEL
  11. LZEXPAND
  12. COMMDLG
  13. TOOLHELP
  14. Common Ground MiniViewer
  15. OPTLOADER - Copyright (C) 1993 SLR Systems
  16. All Rights Reserved
  17. R,R+Z
  18. ")RGh
  19.  -- Error 
  20. loading module
  21. {t'Zp
  22. Q4u>$-
  23. XNEu4
  24. V xD8
  25. B+8s~3
  26. -~%{(n
  27. oetkGN
  28. X<"t$<\t
  29. }3?3WI
  30. !WVS3
  31. %$tnpP
  32. 8=u-Vi
  33. Q    mKV
  34. |yT*:
  35. ->!kv
  36. ^G8^1
  37. *`>Rt
  38. P)&2p
  39. k.u@,y
  40. %ou\u2
  41. \%##,\
  42. (,3\3
  43. dFd=B
  44. mt0trx
  45. i#^{'
  46. yHf"B
  47. #6"6u
  48. _3P<-t
  49. f(fQ%t
  50. &1e# E
  51. Sh4QY{)
  52. AgR$3
  53. AePR]-M
  54. ;fvSP
  55. W6w8    dv2
  56. QH25M0
  57. M2fYZ+2
  58. i=%-u
  59. :uji$Q
  60. n%So_
  61. z^jM7
  62. Y'?gAt
  63. IPH-M?@
  64. "MjF1
  65. 9|&~?
  66. &!+ )
  67. "1"#H
  68. W;d~6
  69. 0o(">
  70. XkY@Y
  71.     1    hF
  72. UrP5N
  73. RNJ^JN
  74. h(DIkPD
  75. b~bA8
  76. f0=Lf
  77.     /    @    
  78. Q    b    s    
  79.  ' 1 ;
  80.  E O Y b l v 
  81. !*!3!<!E!N!X!a!j
  82. !s!|!
  83. ;"C"L"T"\"e"m"u"
  84. #$#+#3#
  85. :#B#I#Q#X#`#g#n#
  86. +$1$8$>$E$K
  87. $R$X$_$e$k$r$x$~
  88. %!%'%,%1%7
  89. %<%A%F%L%Q%V%[%`
  90. %e%j%o%t%y%~%
  91. &#&'&*&.&2
  92. &5&9&=&@&D&G&K&N
  93. &R&U&X&\&_&b&e&i
  94. &l&o&r&u&x&{&~&
  95. %aoh_Y!p
  96. [?m}u
  97. &"f    0
  98. >6 tQC
  99.  +QYj
  100. ):)rP
  101. ?h%jb
  102. Q$\<+\nE
  103. ~    +v    v
  104. #^    PW
  105. R8KeV
  106. P    s|B
  107. T%\Cz(
  108. /K_Nh>
  109. [4&_f
  110. C_WV[j`+t
  111. pt"<d
  112. X*    ~        
  113. B.BY3
  114. OXVPQ
  115.     &&9D
  116. }:`6T
  117. NY@t0
  118. 2\70l
  119. &AO:v
  120. ]428B"+
  121. :oWPB
  122. #L(;%
  123. #F%Zf
  124. am%!4
  125. s3t42
  126.     g    ,hIt
  127. VWj(%"
  128. 2)%_%$
  129. ekXE^y
  130. *?\?^B
  131. $I<v<`<b
  132. 87<K    
  133. 3[(?F`
  134.     !#M-[#
  135. l(8ug
  136. PRM &
  137. XC=G !C
  138. JyAZJ
  139. 65I    3I
  140. EZE23
  141. G)l&9Dx
  142. ~/m]}
  143. &9\"~
  144. *\+Cl2
  145. eM7X`
  146. #s7;w.&
  147. _&7+"
  148. tg@@f
  149. Nc[LD
  150. QmD^D]
  151. gq,#H3
  152. /4y<2O
  153. 1Il9m;
  154. G?>L<
  155. wJ@Zf
  156. .i&f!)
  157. Eg*>2
  158. +ia7/e
  159. =l96E6
  160. ~    o}D0
  161. ~5'EGm
  162. U*%u*
  163. 0.',:
  164. $O0O2O4Z0
  165. .IT6,G
  166. UX>2u
  167. RP$t$
  168. g7    ;|
  169. "u0j$
  170. /E~QWh
  171. @@6E.
  172. I$aL3
  173. tHRE1
  174. k%\P&
  175. 3q]pv
  176. WUnR<Q
  177.     zv2';?
  178. {FFOu
  179. W~tZ:B#fP
  180. C    .3Eb
  181. 4"F+MW
  182. 3HIP    P7
  183. $EX-7
  184. gj!w\!
  185. /MLP"'E
  186. ;vs@Qw
  187. -2c|b
  188. #S> 6Ro
  189. z-qRS
  190. u-,7XW-;
  191. th=7d
  192. t8u0s
  193. r/@E8
  194. i"hBi8
  195. CDGCu
  196. qj}/.T
  197. "9oqV
  198. sn>^'A >
  199. 7LeWQ>E+\(
  200. /6&WB
  201. xDxF4
  202. @T(oi
  203. Q2<hj
  204. v:-$!;sp
  205. paWsa
  206. ZG&PS
  207. R H")
  208. T:fu|O=
  209. s8-9t]
  210. @tO0    
  211. kC    E$_
  212. }*:KyY
  213. :]_t&J
  214. q\{qH
  215. s;R'N
  216. |OhVM)
  217. ?\=y.
  218. :e6Bw
  219. IST|1
  220. V`    F&?
  221. 9clm:
  222. #:"`W
  223. ~qE,Y
  224. $tkGi
  225. &p.eths
  226. $IeAg
  227. !D!he~2%%
  228. iFo&k
  229. {ZS+<M
  230. 9ELr>
  231. UHlG,H
  232. ~Iitp
  233. # hu@
  234. 5`97~
  235. r,b=W
  236. $gu1s
  237. HQ)a'rp~
  238. 9?tFKK
  239. OR(9_
  240. R>;h?3
  241. s>Ku)
  242. =kraMu
  243. Ct',v
  244. %usV+
  245. D#uoD
  246. 3P{"$
  247. g)X~rA
  248. AASQS
  249. |YFm,
  250.  k"XD
  251. c#=    i
  252. ,ccOn
  253. E@)%QB
  254. E7Q+@+
  255. OqC'_
  256.  wu}=E%!&
  257. JKHpH
  258. TD(+F
  259. g|9|m
  260. ix^->
  261. vP'4~
  262. D*j}&b^
  263. zy5t0
  264. 'OU0mt
  265. sVvnCv
  266. QRFwi
  267. ='{5.|*
  268. W#YnL#
  269. aW# H
  270. R)&ju&
  271. 1]Bb1
  272. !Vp%6
  273.  $)3{}n
  274. L+>QM
  275. /i5^B
  276. +\$G,Ht
  277. G?S`)
  278. 0]Vo;
  279. \]cYW
  280. D*t~j/
  281. ]/=/J
  282. LCp.s
  283. =9_^e}"
  284. @kOtX )f
  285. G~k :
  286. +<)t'<\t#< r
  287. |Ujmp
  288. A>-    g\
  289. |#|2?
  290. ;8Uf$
  291. 9 t%)
  292. $_,"J
  293. [JE{[~
  294. `0WQW1D
  295. Nh6Zq"
  296. [&jB3
  297. CiwHG
  298. GdK=*R
  299. D`fC 
  300. *8LjfDz
  301. \d-c}V{
  302. @@ej-
  303. `uYWH
  304. )DwF$
  305. ${/E]
  306. 3>6)*
  307. 68*0J2
  308. -aqr@
  309. RP#n2
  310. ?d34zh
  311. ;HhSC
  312. .jfjF
  313. tp4_h
  314. o}j)Z?
  315. 99I`+F
  316. b&DOd
  317. t;HIA
  318. DP8`{
  319. K$8 1
  320. XmgvW
  321. l'PuV1
  322. \:jz%
  323. A80Z_
  324. )a3S(
  325. HfkW'0
  326. @O0*8
  327. ]>9Eu
  328. citjx
  329. t6g5*u
  330. HH|$p"H~
  331. fh91h
  332. &gnP 
  333. 6h3N:
  334. JI33pI
  335. m9|V3
  336. kd8vV
  337. &3SOy
  338. 'Ky;8
  339. eh;T>;`
  340. \OcO    
  341. f;n}1
  342. h;Cht
  343. CRkV)&
  344. pUEGV
  345. i</O02
  346. X'\''
  347. >6%jo
  348. %s%    G
  349. .,%j%/
  350. %H%k%^rU%
  351. CE%n%.
  352. n:d#u
  353. lHf#h,
  354. CGMINIVW
  355.     _PAGExg!
  356. etOpenFileName r
  357. urned Error 
  358. cgminivw.
  359. >DevicILast Pr
  360. te/Us:!
  361. !&Pmt
  362. s$DISPLAYO
  363. ~s - 
  364. radeBox
  365. GOTOBO
  366. commdl
  367. PRINTDLGMOD
  368. able to o
  369. Try clo
  370. ations
  371. 5TmsRmn
  372. A{al-
  373. FPICgi
  374. LAT1V    Y
  375. EyE\Q)\
  376. /,-SofO
  377. tFont
  378. ?;\CGDP%04x
  379. PFM;I
  380. .NCMD
  381. opyrigh
  382. t No H
  383. C Nware
  384. Mod_Vpo
  385. FILE:
  386. mov    o
  387. dup beg2
  388. vType 3
  389. MatYx 
  390. h /.not
  391.  put    
  392. RBuildChL
  393.  PDHg
  394. "Procs
  395. ec[b9
  396. {FA83F
  397. Hcave
  398. -#ltruD9
  399. >Mima
  400. napsh
  401. 1ave|
  402.  vsh 1024S
  403. {curr
  404. fU Djl
  405. 9subx#
  406. neQa0"B  b
  407. rgb9l
  408. GET_xTxO
  409. k 6rflow
  410. ide by 2
  411. pG"AfM
  412. ronmG
  413. -18-|
  414. unexpecSd hea1
  415. wargu*    ts+
  416. rXR1+ ma
  417. LFpkVurN&e
  418. 9n-ti
  419. dIB5.pW (3
  420. &File
  421. &Open...
  422. Document &Info...
  423. &Print...
  424. P&rint Setup...
  425. E&xit    Alt+F4
  426. &Page
  427. &First    Ctrl+Home
  428. &Previous    Ctrl+PgUp
  429. &Next    Ctrl+PgDn
  430. &Last    Ctrl+End
  431. &Go to...
  432. &Upgrade
  433. &Information...
  434. &Help
  435. &Contents    F1
  436. &Search for Help on...
  437. &How to Use Help
  438. &About Common Ground...
  439. &File
  440. &Open...
  441. &Save As...
  442. Document &Info...
  443. &Print...
  444. P&rint Setup...
  445. E&xit    Alt+F4
  446. &Page
  447. &First    Ctrl+Home
  448. &Previous    Ctrl+PgUp
  449. &Next    Ctrl+PgDn
  450. &Last    Ctrl+End
  451. &Go to...
  452. &Upgrade
  453. &Information...
  454. &Help
  455. &Contents    F1
  456. &Search for Help on...
  457. &How to Use Help
  458. &About Common Ground...
  459. Go To Page
  460. Cancel
  461. Go to page:
  462. Common Ground
  463. MS Sans Serif
  464. Cancel
  465. Upgrade Information
  466. Arial
  467. This Common Ground MiniViewer allows you to open fully formatted Common Ground documents.   Now others can send you documents with complete confidence you will be able to view and print with
  468. But, there's more to Common Ground!  When you purchase Common Ground, you can create Common Ground documents of your own and send them electronically to others, so you begin saving money and 
  469. No Hands Software
  470. 1301 Shoreway Rd.
  471. Belmont, CA 94002
  472. in the USA 800 598-3821
  473. (415) 802-5800
  474. Fax: (415) 593-6868
  475. getting your tasks done faster too.  Common Ground lets you easily convert any document to an exact representation that anyone can view and print, regardless of their applications, computer platform,
  476. all graphics, color, fonts and formatting intact from their original.  The documents will arrive faster than paper would have, with big savings on costs and hassle too.
  477. or fonts -- even if they have not yet purchased Common Ground.  And with Common Ground, you get an enhanced viewer with features that include search, copy and paste, and additional navigation tools.
  478. See our on-line help for more information about Common Ground and how you can use it.  Or better yet, contact us right now.  We'll answer all your questions and tell you about our latest promotions.
  479. Your license to use the MiniViewer is for non-commercial purposes only.
  480. Save Time and Money -- Distribute Fully Formatted Electronic Documents!!!
  481. Document Information
  482. MS Sans Serif
  483. File:
  484. Creator:
  485. Company:
  486. Application:
  487. Size:
  488. Printing:
  489. Text Copy:
  490. Image Copy:
  491. Encrypted:
  492. Platform:
  493. (File)
  494. (Creator)
  495. (Company)
  496. (program)
  497. (Size)
  498. Windows
  499. Allowed
  500. Allowed
  501. Allowed
  502. Security
  503. Hi-resolution Info:
  504. (Hi-res Info)
  505. JPEG Graphic:
  506. (JPEG)
  507. Print
  508. Printer:
  509. System Default
  510. Print Range
  511. S&election
  512. &Pages
  513. &From:
  514. Print &Quality:
  515. &Copies:
  516. Print to Fi&le
  517. Collate Cop&ies
  518. Cancel
  519. &Setup...
  520. &Help
  521. Print Text as &Graphics
  522. Print Setup
  523. Printer
  524. (No Default Printer)
  525. &Default Printer
  526. Specific &Printer:
  527. Orientation
  528. Po&rtrait
  529. &Landscape
  530. Paper
  531. Si&ze:
  532. &Source:
  533. Cancel
  534. &Options...
  535. &Help
  536. VS_VERSION_INFO
  537. StringFileInfo
  538. 040904E4
  539. CompanyName
  540. No Hands Software Inc.
  541. FileDescription
  542. Common Ground Mini Viewer
  543. FileVersion
  544. 1.01.057
  545. InternalName
  546. CGMINIVW
  547. LegalCopyright
  548. Copyright No Hands Software Inc. 1993
  549. LegalTrademarks
  550. Digital Paper  is a Trademark of No Hands Software Inc.
  551. OriginalFilename
  552. CGMINIVW.EXE
  553. ProductName
  554. No Hands Common Ground
  555. ProductVersion
  556. 1.01.057
  557. VarFileInfo
  558. Translation
  559. |CONTEXT
  560. XOMAP
  561. WBTREE
  562. ---=-
  563. M-]-m-}-
  564. =-===
  565. M=]=m=}=
  566. M-M=M
  567. ].]>]N]^]n]~]
  568. m.m>mNm^mnm~m
  569. }.}>}N}^}n}~}
  570. Common
  571.  Ground 
  572. MiniView
  573. er Help
  574. BrowseB
  575. uttons()?
  576. Conte
  577. Online
  578. What i
  579. ng th
  580. How to s
  581. ave time
  582. reduc
  583. e costs 
  584. stributV
  585. selle
  586. ftwar
  587. pic, c
  588. For i
  589. nformati
  590.  menKu.#
  591. oday 
  592. our laotest
  593. t navig
  594. board sh
  595. ortcu
  596. s worlE
  597. volves a
  598.  dissemi
  599. tical5
  600. uccessr
  601.  ever
  602. y organi
  603. indiv
  604. idual-
  605. w, you
  606. elect
  607. maiwl (
  608. federal
  609. xpensr
  610.  c3an
  611. instant
  612. ranspU
  613. recipi8
  614. nded w
  615. graphic
  616. rue noT
  617.  letvm
  618. m)g$oolA 
  619.  A earc
  620. 5thumbn
  621. ^=won
  622. a val
  623. So.03
  624. effiMc
  625. Cgood
  626. D ro;
  627. eirnVc
  628. g7C9QeH@tur!n
  629. u$!(S
  630. @D R6
  631. c4=(D<T6
  632. pvAiK
  633. "g#    :x0{
  634. er3ia
  635. "corr 
  636. ity"&
  637. rWved{
  638. #p?ublish
  639.  (e.g.x` 
  640. 3rer!
  641. _etc.){
  642.  u hao
  643. B!P-P
  644. Digit
  645. fi"P~
  646. floppy
  647. 9qrWp
  648. c/news
  649. wPpic
  650. T'ech
  651. J@pr#+
  652. q)'b[
  653. blimi?pnd
  654. ooIk>
  655. -ROM-
  656. tigP+
  657. empl3oyHp
  658. bro1w
  659. `duXp.
  660.  Fram
  661. da WGinddP
  662. LE 2.0
  663. mmedik
  664. d#idXc
  665. L#@vn
  666. vail42
  667. r5rpI
  668.  l=s.
  669. 1wa !o
  670. s Softwt
  671. @vol!
  672. recip
  673. do~@e%-
  674. haB '
  675. ilit5 
  676. RAno{n-P1erci
  677. advaz
  678. Februa
  679. ry 16, 1G994y
  680. !m  k
  681. ATIONAL 
  682. RETAIL S
  683. TORES8
  684. ghead
  685. (260 loc
  686. 800-EG
  687. GHEAD
  688. 344-4323
  689.  821405
  690. 75666
  691. sopUSA
  692. r451-763
  693.  SuperC
  694. p000 9(
  695. P@est
  696. fr]}mvA}
  697. St[pZp
  698. RrQpXs
  699. 76-10863x
  700. 1209]
  701. r328-4
  702. RDER CAT
  703. ~anec
  704. 603-446-
  705. 55-6227
  706. 908-905-
  707. RA 038
  708. PC)Micro
  709. r67-708
  710. UT431
  711. pELLERS
  712.  PLEASE 
  713. CONTACT:-
  714. 1810a
  715. KenfilS D
  716. r7_4KENF
  717. r7745
  718. NHS11
  719. !arge
  720. Vorar
  721. schaftpa
  722. -5487
  723. itsuiTa
  724. 14 Aq
  725. c Driv
  726. Pchs F
  727. 452-0
  728. aBelg
  729. PBegon
  730. i40raat 1
  731.  Namz
  732. `ue Ol
  733. 75020 
  734. (1) e
  735. Ge]Pn
  736. line Gkmb
  737. 7o04 O%
  738. (07802)
  739.  924-
  740. TPo, 
  741. 560o25 P
  742. o 33 Blg
  743.  Higas
  744.  Toky
  745. 3797-57Q7
  746. `3047
  747.  BB Rot
  748.  4157
  749. >=,c?
  750. G$Bn ex
  751. @sAprn
  752. rdles
  753. H%k&V8
  754. A6b.Sfid
  755. B?recipi
  756. Po*B1G
  757. 0ma    M
  758. 3TC}@ig
  759.  b6`fmn
  760. Q%j|b'imak
  761. GwithCinFZGU
  762. G)`arg
  763. 2haQv
  764. P%kV,Ar}A
  765. ;Aelow
  766. RDree 
  767. t[s:v
  768. }(0@(0`1
  769. D`=(1J
  770. F'PP(0
  771. (0Cay
  772. "OmD_m|e2
  773. put*}}
  774. f(0a0
  775. @wP%Ce
  776. non-k@m
  777. be\(0
  778. 7-bas/A^G    ,
  779. 2$Ac'r-}=y
  780. aGU6Cr ad
  781. stOPPL@\JNR
  782. 0^HvPE
  783. ,VAn5C
  784. hsupp
  785. OQsimp
  786. 6nCavj dAX
  787. B time@
  788. "<PfO-lau
  789. "vP1W
  790. up au
  791. isBt@y
  792. P$Din&
  793. ogram 
  794. 4Utooql"
  795. ipuu@0
  796. Qf(pu
  797. addi\
  798. a ran
  799. rpHmXm
  800. thods l2
  801.  Bkar
  802. NOTE:
  803. KeyfE
  804. direc.
  805. cn s!@ln
  806. HwOME5BEND
  807. ~TCbeginn
  808. <}L}\|F
  809. rtcuts)J
  810. nbFirs
  811. PreviGouso
  812. GT@o..
  813. b{ vX
  814. g box
  815. Gtop6
  816. "[waPCch
  817. 4`{4`
  818. ;\akF#o
  819. Cop Qr
  820. numbe
  821. "5B"To"
  822. &e"es~
  823. qualit
  824. 3al4`
  825. b@ck8
  826. /vary
  827. 5, byc c
  828. pPeckj5b
  829. nam?B
  830. QCopi1
  831. Q2sequ
  832. !PTMdMu
  833. E.6K3
  834.  butt
  835. &$*0t/
  836. emory
  837.  resP
  838. doon'tS
  839. Prigh
  840.  misbe
  841. havI`)@
  842. -*"pap_
  843. sizeM,
  844. D via
  845. o ge\
  846. Cs )(
  847. sS`)M
  848. utomm
  849. rol^%0nel M
  850. ogram
  851. orariN
  852. Q2eC < u
  853.  wideY
  854. AvailCabja
  855. C*`@6x
  856. #g?eneral
  857. etgc.)
  858. 8@8&I"
  859. U-"3de
  860. 8%s`SR
  861. aal+so
  862. "en..
  863.  fo\c
  864. QdkarG
  865. HelpPe
  866. About
  867. z/   (Lf)-
  868. tcut=:
  869.  TRL+
  870. creaV
  871. <!B71(
  872. r juf
  873. abit0
  874. 8#2I+x
  875. `r}QpiuTqmq
  876. ALT+F
  877. playp;
  878. 3@view
  879. `ra[ 
  880. FAmqt
  881. b0nly
  882. -,-B<!
  883. @-~FS2
  884. P0`r/ 
  885.  %M5M
  886. ^t{0hv^
  887. oftwTA)q
  888. mplet
  889. )plic
  890. Tm1QB
  891. ics?Q
  892. arFPT
  893. loca,ph
  894. croll&
  895. tart"
  896. (s!)&
  897. Rgtak%
  898. a tutor
  899. incluo
  900. di/ffer
  901. ?featur%
  902. GAboi
  903. 4dmtcso?me bas
  904. Produ
  905. na{me
  906. Vers;
  907. Copyr?ight d
  908. %qbin
  909. 2sque
  910. =@exe
  911. $perra
  912. bP7pgh
  913. _multi)p-
  914. TRL+P
  915. 3PPFZB
  916. HOME~Ipre
  917. vioK0
  918. QWFgU
  919. n~Ila
  920. DWEEN
  921. ]e, {Inu
  922. Road,
  923.  #220
  924. l2pt, CA 
  925.  94002  KUSFpI
  926. 800) 598
  927. -3821
  928.  802-5d`
  929. Faxvh593-
  930. provi/
  931. abilit
  932. Odriva
  933. NOTE: @
  934. scaGp0
  935. cinstos
  936. Q&Qonon-81erQ
  937. V`addi
  938. 1free
  939. 'T80j0
  940. os beL@cr
  941. e5`d@be80
  942. F@    02
  943. oubk0cl
  944. via el
  945. maiGl, \
  946. ",M1siL<
  947. nee>2
  948. ,0r ruCnn
  949. nipul
  950. tselfJ
  951. whK0(
  952. !-l_aunch
  953. d@au\
  954. %0sSsup]-
  955. 5Alth 
  956. E01.o
  957. (cgm)
  958. Ga-q)
  959. 0Helv=
  960. MS Sa
  961. navig7r
  962. shortcu/
  963. Op8qsu
  964. SizRP
  965. revio
  966. qualityz
  967. rangP
  968. Setupu
  969. Graphic
  970. W`FD`
  971. UpgCra
  972. ;}K}[}k}{}
  973. -]=]M]m
  974. m-m=mMm]mmm}m
  975. \CG101\M
  976. INIVq
  977. Tim; P0R_educe
  978. y-FT1
  979. @t Line
  980. 0W_??
  981. 8ab6{g
  982. %Q$/{
  983. a{}GlQ
  984. .->-N-^-n-~-
  985. .=>=N=^=n=~=
  986. p?"p?&p?
  987. *p?.p?2p?6p?
  988. :p?>p?Bp?Fp?
  989. Jp?Np?Rp?Vp?
  990. Zp?^p?bp?fp?
  991. jp?np
  992. }-}=}M}]}m}
  993. Common Ground Mini Viewer
  994. cgminivw.hlp4Common Ground Files (*.DP)|*.dp|All Files (*.*)|*.*|D%s does not appear to be a Common Ground file.  Choose another file?
  995. Common Ground2Cannot print to %s. Please select another printer.$Unable to create destination file %sVYou cannot run Common Ground on this machine.  Common Ground requires a 386 or better.mCommon Ground requires Windows 3.1 to be run in Enhanced Mode.  You need to restart Windows in Enhanced Mode.
  996. Warning
  997. Common Ground has detected a problem with your display driver that prevents it from displaying a graphic in this document.  You should contact your vendor for an upgraded video driver.
  998. MiniViewer
  999. Version %s/Copyright 
  1000.  1993 - 1994 No Hands Software, Inc.
  1001. All Rights Reserved
  1002. %d.%02d
  1003. >This file is encrypted and cannot
  1004.  be opened with this viewer.
  1005. %s is not a Common Ground file.
  1006. Common Ground - %s
  1007. Printing page %d of %d
  1008. to %s on %s
  1009.     Macintosh
  1010. Disallowed
  1011. Allowed
  1012. Present
  1013. Not present?See upgrade menu or help for more information on Common Ground.HThis MiniViewer may be redistributed freely for non-commercial purposes.
  1014. HCGDC
  1015.     Helvetica
  1016. QuickTime XCMDs
  1017. 12/21/94
  1018. page 
  1019. Times
  1020. The QuickTime XCMDs
  1021. +Z$    Ken Doyle
  1022. QuickTime Software Group
  1023. Apple Computer, Inc.
  1024. April 26, 1994
  1025. H-I am not an author (nor do I play one on TV).
  1026. YThe QuickTime XCMDs are a small set of XCMDs that allow HyperCard users access to many of
  1027. the features of the QuickTime
  1028. ; library of software.  The QTMovie XCMD can be used to play
  1029. HWQuickTime movies either in a window or directly onto the screen. The QTRecordMovie XCMD
  1030. ^displays a window in which video coming from a digitizer card can be viewed. You can then send
  1031. Rcommands to the window to capture and create your own movies or picture files. The
  1032. YQTEditMovie XCMD allows you to perform various editing functions including cut, copy, and
  1033. apaste of  individual tracks among different movies, adding text tracks to a movie, setting a clip
  1034. `region on a movie, and many other editing functions. The QTPict XCMD performs a variety of still
  1035. fpicture related utilities including displaying a picture on a card, compressing pictures, and allowing
  1036. 4control over the clipping region of the card window.
  1037. ZIt is recommended that you give HyperCard at least a two megabyte partition when using the
  1038. QuickTime XCMDs.
  1039. */!The QTMovie XCMD: Getting Started
  1040. TThe QTMovie XCMD allows you to play movies in a window in HyperCard, using HyperCard
  1041. 52.0's XWindow facility. An alternative method called 
  1042. Direct
  1043. % movies does not play into a separate
  1044. H]window but rather plays directly into the card window's port. This method has some advantages
  1045. Zand disadvantages, but in particular allows one to use the XCMD in SuperCard and Macromind
  1046. ,Director. Direct Movies are discussed later.
  1047. Window Movies
  1048. ZPlaying a movie in a window is as simple as sending the following command (either from the
  1049. (message box or from a HyperTalk script):
  1050. Geneva
  1051. 7QTMovie  OpenMovie, Document, "MyDisk:MyMovie", "20,20"
  1052. H[A document type window will appear with 
  1053. MyMovie
  1054.  playing at location 20,20 within the card
  1055. cwindow. You can then use all the features of the movie controller that appears at the bottom of the
  1056. \window to navigate through the movie. When you are done you can close the window by clicking
  1057. _on the close box. That's all you really need to know to play a movie. Naturally there are a few
  1058. Cadditional options and the next 743 pages attempts to explain them.
  1059.     Helvetica
  1060. QuickTime XCMDs
  1061. 12/21/94
  1062. page 
  1063. The Basics
  1064. Times
  1065. )The basic form of the QTMovie command is:
  1066. Geneva
  1067. EQTMovie  OpenMovie, windowType,  <fileName>,  location  [,options...]
  1068. HYThe first parameter is 
  1069. OpenMovie
  1070. .  This tells the XCMD that we want to open a new movie
  1071. \window. The second parameter is the windowType. The window type can be one of the following:
  1072. YDocument, Windoid, TallWindoid, Plain, Dialog, AltDialog, or Borderless (see illustration
  1073. `below). Other options for this parameter are discussed in the Advanced Topics section. The third
  1074. eparameter is the name of a movie file. If the movie is in the same folder as the stack, you need only
  1075. `name the file, otherwise, the full path name must be provided. The location parameter can be one
  1076. cof a few different options. You can specify a point or a rectangle for the location parameter. If a
  1077. gpoint is specified, then the movie is shown at its normal size at the point specified.  The point is in
  1078. fthe local coordinates of the card window. If a rectangle is specified, then the movie is scaled to fit
  1079. ethe rectangle. The top left of the rectangle specifies the location. Again, the rectangle is in local
  1080. ecoordinates. Alternatively, you can specify one of the following literals for the location parameter:
  1081. largest
  1082. deepest
  1083. , or 
  1084. E. These will cause the movie to be centered on the same screen as the
  1085. Hbcard window, the screen with the largest area, the screen with the greatest bit depth, or the main
  1086. screen, respectively.
  1087. bYou can specify a list of optional parameters in any order after the location parameter.  The most
  1088. common options are:
  1089. )R"- start the movie in a muted state
  1090. paused
  1091. )R0- start the movie in a paused state at time zero
  1092. )R4- when play hits the end, loop back to the beginning
  1093. k    invisible
  1094. )R9- initially,  do not show the window (or movie if direct)
  1095. noController
  1096. )R1- do not display a movie controller in the window
  1097. H^The above options are used to override the default behavior of the specific features. Thus the
  1098. bdefault is for a movie to be shown playing with sound on. The window will have a controller and it
  1099. Awill be visible. Additional advanced options are discussed later.
  1100. `After calling QTMovie OpenMovie, the HyperTalk global "the result" will contain an error message
  1101. \if some problem was encountered in attempting to open the movie. The first word of the error
  1102. Zmessage is always the word "Error". Thus when calling QTMovie, you should always follow up
  1103. with an error check:
  1104. 7QTMovie  OpenMovie, Document, "MyDisk:MyMovie", "20,20"
  1105. get the result
  1106. ,if "Error" is in it then <do error handling>
  1107. H]As mentioned above the windowType parameter specifies the window type in which to display the
  1108. movie.  The window types are:
  1109.     Helvetica
  1110. QuickTime XCMDs
  1111. 12/21/94
  1112. page 
  1113. Vjpeg
  1114. Photo - JPEG
  1115. AppleMark
  1116. !,!#'(***
  1117. .1-)1%)*(
  1118. ((((((((((((((((((((((((((((((((((((((((((((((((((
  1119. %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz
  1120. &'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz
  1121. '1?@{z
  1122.     I{k`
  1123. .UH8D
  1124. <bu=f="
  1125. S[Svmo4
  1126. KMJAp5
  1127. T-#$D
  1128. pr~c[
  1129. 8$t$W3
  1130. -"K[t
  1131. kS    *n
  1132. u-3`hcu
  1133. Py{mv
  1134. Lu}nE
  1135. q"b    *2
  1136. ~{f'k
  1137. krxP6
  1138. kxr@uHmd
  1139.     Z?1G
  1140. oBy 09
  1141. =LNY    ^
  1142. Ti^TF
  1143. QTxAE
  1144. -j;m.i!
  1145. `}O^{t
  1146. 4'wr;
  1147. TQE{'
  1148. KchRrWR_
  1149. h.n [h
  1150. 5(>]:
  1151. &A\d\|V
  1152. G~z~G
  1153. j    ji*
  1154. fI>.\
  1155. y4e)5
  1156. I#Ep?
  1157. %2>Ry
  1158. QuickTime
  1159.  and a
  1160. Photo - JPEG decompressor
  1161.  are needed to see this picture
  1162. document
  1163. windoid
  1164. tallWindoid
  1165. Vjpeg
  1166. Photo - JPEG
  1167. AppleMark
  1168. !,!#'(***
  1169. .1-)1%)*(
  1170. ((((((((((((((((((((((((((((((((((((((((((((((((((
  1171. %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz
  1172. &'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz
  1173. =.{7V
  1174. #8#8&
  1175. O>>>q
  1176. kGn9R8
  1177. &$+4I
  1178. :dq!{8
  1179. :q_NW
  1180. Y7rrG
  1181. Msqr|
  1182. sif5K
  1183. 2@$cv
  1184. +c,p8
  1185. n(F}1
  1186. PE+,[
  1187. Ztp@|
  1188. Mm,F(
  1189. tevH2
  1190. qKkwfcRn
  1191. Y|+rs
  1192. x^H$V
  1193. Fc$1O9
  1194. <Uey{s
  1195. 0"<c88
  1196. Kq#H"Q
  1197. }:yaI
  1198. DTm@z
  1199. o5ncTI6
  1200. G.vH1
  1201. 5    Xp|
  1202. neRTy[[
  1203. Q]&aE
  1204. #[gs,
  1205. [)|+v
  1206. gRA(W9
  1207. 2qwEi
  1208. y6Kk+
  1209. J\I+z
  1210. }}Ea:
  1211. plain
  1212. dialog
  1213. )j    altDialog
  1214. borderless
  1215. Times
  1216. H@All of the window examples above are shown without a controller.
  1217. *$'Examples of opening a new movie window:
  1218. Geneva
  1219. AQTMovie OpenMovie, Windoid, "HD:Movies:Running Horses", "100,100"
  1220. H-- plays a movie in a windoid located at 100,100 with a movie controller
  1221. PQTMovie OpenMovie, Plain, cd field fileName, the rect of btn movie, nocontroller
  1222. Z-- plays a movie (whose name is obtained form the card field "fileName") in a Plain window
  1223. Xscaled to the size and location of button "movie".  The movie controller is not visible.
  1224. l?QTMovie OpenMovie, Document, userReply, card, paused, invisible
  1225. Z-- starts a movie in an hidden document window, paused at the beginning of the movie.  The
  1226. Zname of the movie is contained in a the script variable "userReply", which could have been
  1227. Wthe result of a HyperTalk "answer file" dialog. The window is made visible by executing
  1228. Tshow window <windowName> at which point it will appear centered in the card window's
  1229. screen.
  1230. Controlling Movies
  1231. Unless you specified 
  1232. noController
  1233. )<9 with a window movie, you will get the QuickTime standard
  1234. HNmovie controller in the window. It will always be at the bottom of the window.
  1235.     Helvetica
  1236. QuickTime XCMDs
  1237. 12/21/94
  1238. page 
  1239. Vjpeg
  1240. Photo - JPEG
  1241. AppleMark
  1242. !,!#'(***
  1243. .1-)1%)*(
  1244. ((((((((((((((((((((((((((((((((((((((((((((((((((
  1245. %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz
  1246. &'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz
  1247. _x'CO
  1248. _x'CO
  1249. _x'CO
  1250. z(B2o
  1251. ys(`I
  1252. '?3g1
  1253. Q)yn&
  1254. 3~sd3
  1255. s3G    $
  1256. A'9<g
  1257. F2=O=O#
  1258. ;Vdu1
  1259. F}};}=
  1260. TmQ:|
  1261. G9synX
  1262. *MJV)h
  1263. ?W'<rG#
  1264. Ge^G 
  1265. y p>l
  1266. w&8LJ
  1267. X+[s:
  1268. yA_Bf
  1269. pC.O\q
  1270. a9>m47
  1271. yw4u^
  1272. D?]=}
  1273. 2xX    ?@
  1274. [pxeS
  1275. ZX^j:W
  1276. A*DtKx
  1277. xv%NG
  1278. Ech0M?
  1279. kWRHQI
  1280. QuickTime
  1281.  and a
  1282. Photo - JPEG decompressor
  1283.  are needed to see this picture
  1284. Times
  1285. H`With this controller, you can use the slider to quickly position yourself anywhere in the movie.
  1286. `You can also use the step forward and reverse buttons to fine tune your position. The play/pause
  1287. bbutton toggles between play (a black triangle) and pause (two vertical lines). The speaker icon on
  1288. cthe left controls the movie volume. In addition, you can click in the movie itself to pause a movie
  1289. Zand double click to start it. This is handy when you do not have the controller displayed.
  1290. ZYou can also control movies by sending messages to the window from HyperTalk. For a window
  1291. .movie the general form of a window message is:
  1292. Geneva
  1293. %send <message> to window <windowName>
  1294. H_The window name defaults to the file name of the movie with the volume path extracted. (You can
  1295. 7use the windowName property to change the window name.)
  1296. `For example, to have the XCMD play the movie in reverse (a function not intuitively available in
  1297. 1the movie controller) you would send the message:
  1298. &send Reverse to window "Juice Bottles"
  1299. HYThere are a number of messages you can send to the movie window. The most common of those
  1300. )RF- Play Forward (sets speed to last rate set (see rate property below))
  1301. Pause
  1302. - Pauses the movie
  1303. Reverse
  1304. )RA- Play Reverse (negate the last rate set, and play at that speed)
  1305. StepFwd
  1306. - Step Forward 1 
  1307. frame
  1308. StepRev
  1309. - Step Backward 1 
  1310. frame
  1311. HideController
  1312. - Hide the play controller
  1313. ShowController
  1314. - Show the play controller
  1315. H\The control commands that you can send are: Play, Reverse, Pause, StepFwd, and StepRev. Play
  1316. hwill play the movie at whatever its current rate setting is. The default rate is whatever preferred rate
  1317. ^is saved with the movie (normally 1).  You change the current rate setting by setting the rate
  1318. _property (see below).  Pause will halt the movie but its current rate setting will be retained.
  1319. cReverse negates the current rate setting and then tells the movie to play.  If the rate was already
  1320. anegative then Reverse will cause the movie to play in the forward direction. Again, more advanced
  1321. 6messages are presented in the Advanced Topics section.
  1322.     Helvetica
  1323. QuickTime XCMDs
  1324. 12/21/94
  1325. page 
  1326. H(Getting and Setting Properties of Movies
  1327. Times
  1328. WAnother means of controlling movies is by setting various properties of the window. The
  1329. bdifference between this and sending a message is that there is a value associated with a property.
  1330. 3The general form of the calls for window movies is:
  1331. Geneva
  1332. 0set <property> of window <windowName> to <value>
  1333. %get <property> of window <windowName>
  1334. HdThere are some properties that you can get but not set, such as the duration property, which returns
  1335. fthe duration of the movie (in the movie's time scale). Most of the settable properties you can get (in
  1336. cmany cases it just returns whatever you set before.) All together there are over seventy properties
  1337. Tassociated with the QTMovie XCMD, ranging from the common and useful to the rare and
  1338. ^obscure. The common and useful I will discuss now; the rare and obscure (and those in between)
  1339. NI'll save for the Advanced Topics section (which I really do intend to write).
  1340. 6The common properties related to the movie itself are:
  1341. currTime
  1342. )R@- get or set (in the movie's time scale) the current time (does 
  1343.  pause)
  1344. duration
  1345. )R>- return (in the movie's time scale) the duration of the movie
  1346. movieScale
  1347. )R;- return the time base of the movie (time units per second)
  1348. )RI- fixed number - sets playback rate of the movie (negative for playing in
  1349. Dreverse). If movie was paused, it stays paused. Use the play command
  1350. !to start movie going at new rate.
  1351. )R2- turns on or off loop mode (set to true or false)
  1352. audioLevel
  1353. )RI- the current audio level (0-256, or higher with QT1.6 and new Sound Mgr)
  1354. )R/- turns on or off muting (set to true or false)
  1355. HbFour properties affect the size or location of the movie or window (these are discussed in greater
  1356. 8detail under Window and Movie Positioning and Resizing):
  1357.     windowLoc
  1358. - a new location for the window
  1359. windowRect
  1360. - a new rect for the window
  1361. movieLoc
  1362. )R4- change the location of the movie within its window
  1363. k    movieRect
  1364. )R&- scale the movie into a new rectangle
  1365. Example calls:
  1366. 8put currTime of window "High Jumper" into field saveTime
  1367.  get audioLevel of window "Tiger"
  1368. 7put movieLoc of window 'Race Car" into field raceCarLoc
  1369. 6set currTime of window "High Jumper" to field saveTime
  1370. $set rate of window "Race Car" to 2.5
  1371. Uput duration of window currWindow / movieScale of window currWindow into movieSeconds
  1372. Closing the Window
  1373. XTo close a window movie you can click in the window's close box or you can use the close
  1374. window command:
  1375. close window "Running Horses"
  1376. HNThe movie
  1377. s data structures are automatically freed when the window is closed.
  1378.     Helvetica
  1379. QuickTime XCMDs
  1380. 12/21/94
  1381. page 
  1382. Direct Movies
  1383. Times
  1384. ^Direct movies play directly into the card window. You indicate that you want a direct movie by
  1385. ]specifying Direct for the windowType. Assuming there is no error, "the result" will contain a
  1386. Hmovie id that you will need to save for subsequent control of the movie.
  1387. Geneva
  1388. global movieID
  1389. BQTMovie OpenMovie, Direct, field fileName, topLeft of btn movieLoc
  1390. get the result
  1391. ,if "Error" is in it then <do error handling>
  1392. else put it into movieID
  1393. H[For window movies, HyperCard automatically gives the window idle time and hence movies keep
  1394. arunning without any need for action on your part. With Direct movies, however, the automatic idle
  1395. cfacility does not exist. You need to give the movie idle time by installing an Idle handler in your
  1396. Gcard (or background or stack) script. The Idle handler looks like this:
  1397. on idle
  1398. global movieID
  1399. if movieID is not empty then
  1400. QTMovie  Direct, movieID, Idle
  1401. end if
  1402. end idle
  1403. HbNotice that in this case the Direct keyword is the first parameter to QTMovie. This is in fact the
  1404. 3general form of all messages sent to direct movies:
  1405. 0QTMovie Direct, movieID, <message> [,options...]
  1406. H[The second parameter is always the movie id that was returned by the OpenMovie command. The
  1407. Zthird parameter can be one of the messages listed above for window movies (such as play or
  1408. pause).
  1409. QTMovie Direct, movieID, Play
  1410.  QTMovie Direct, movieID, StepFwd
  1411. HdTo get or set properties the third parameter is Get or Set, in which case there is a fourth property
  1412. dwhich is the name of the property. For Set there is a fifth parameter, the value to which to set the
  1413. Bproperty. For Get, the property value is returned in "the result".
  1414. &QTMovie Direct, movieID, Get, currTime
  1415. "put the result into field saveTime
  1416. (QTMovie Direct, movieID, Set, rate, -3.0
  1417. 6QTMovie Direct, movieID, Set, currTime, field saveTime
  1418. HYWhen you are done with a Direct movie, you need to dispose of it so that the movie's data
  1419. ?structures are released. This is done with the Dispose message:
  1420. global movieID
  1421.  QTMovie Direct, movieID, Dispose
  1422. put empty into movieID
  1423.     Helvetica
  1424. QuickTime XCMDs
  1425. 12/21/94
  1426. page 
  1427. Times
  1428. HaSince Direct movies are played directly onto the card window, the display is volatile. This means
  1429. ^that if HyperCard needs to update the card, the movie display will be erased. This is the main
  1430. ^disadvantage of using Direct movies. You need to be aware of this and try to avoid unnecessary
  1431. ;updating. The following script will refresh a Direct movie:
  1432. Geneva
  1433. on refresh
  1434. global movieID
  1435. &QTMovie Direct, movieID, Get, movieLoc
  1436. put the result into xy
  1437. *QTMovie Direct, movieID, Set, movieLoc, xy
  1438. end refresh
  1439. H[This might be a handy script to call from the moveWindow handler, since the movie could get
  1440. `erased if the card window is dragged. You might also explore the use of the clipping commands in
  1441. >the QTPict XCMD to try to protect the movie from being erased.
  1442. `There two main reasons for direct movies
  1443.  existence. One is the availability of a set of special
  1444. ffeatures that are only available with direct movies. The other is the ability to play direct movies in
  1445. USuperCard and Macromind Director. Since SuperCard and Director do not support the the
  1446. SHyperCard XWindow interface, direct movies are the only way to use QTMovie in those
  1447. aapplications. Indeed, there are other ways to play QuickTime movies in those applications, but if
  1448. Pfor some warped reason you want to use QTMovie, direct movies are the way to go.
  1449. ]There are several other features of Direct movies that will be covered in the Advanced Topics
  1450. section.
  1451.     Helvetica
  1452. QuickTime XCMDs
  1453. 12/21/94
  1454. page 
  1455. H    QTMovie: 
  1456. Advanced Topics
  1457. Times
  1458. HVIncluded in this section is a discussion of the remaining OpenMovie options and window
  1459. :properties as well as some advanced Direct movie features.
  1460. Call Back Messages
  1461. ^Call Back messages are messages that are sent from the XCMD back to HyperCard. It requires the
  1462. bXWindow interface so will not will for direct movies (except for the timed call back message). You
  1463. \can set up a number of different call backs that the XCMD will perform. You name the handler
  1464. cwithin your card, background, or stack script that is to be called when certain conditions occur by
  1465. .setting the appropriate message name property.
  1466. If you set the 
  1467. mouseDownMsg
  1468. )]< property, your handler will be called whenever the mouse is
  1469. Hdclicked in the movie area of the window (not when it is clicked in the controller or the title bar).
  1470. cThe mouse click location (in the coordinates of the movie window) is sent as the first parameter to
  1471. Zthe mouseDownMsg. The current time in the movie is passed as the second parameter, and the
  1472. 3name of the movie window is in the third parameter.
  1473. timedCallBack
  1474. )RN property is a bit different. It specifies both a handler and a time (in movie
  1475. Hbtime) when the handler should be called. The handler and the time are separated by a space.  (This
  1476. [is handled quite easily by using 
  1477.  in HyperTalk.) If the movie is playing in the forward
  1478. gdirection, the message is called when the movie time is greater than or equal to the call back time; if
  1479. eit is playing in reverse then the message is called when movie time is less than or equal to the call
  1480. `back time. The timed call back message is called with the window name as its parameter. The time
  1481. ais expressed in movie time, a value which can be obtained by getting the currTime property of the
  1482. ^window. You can also specify 
  1483.  for the call back time, in which case the call back is made
  1484. Xwhen the movie hits the end. Unlike the other call back messages, callBackMsg is cleared
  1485. `whenever it is executed. You can reset the timedCallBack from within the callback handler if you
  1486. wish.
  1487. windowCloseMsg
  1488. )eF is called when the window is about to be closed (for example when the
  1489. HPuser clicks in the close box). It is called with the window name as a parameter.
  1490.     cursorMsg
  1491. )<P is called repeatedly whenever the cursor is over movie area of the window.  The
  1492. H_parameters passed are the mouse location (again in the coordinates of the movie window) and the
  1493. ^window name. The intent of this callback is to allow the user to set the cursor shape when the
  1494. cursor is over the window.
  1495. movieControlMsg
  1496. )eH is called when the movie controller receives a play, go to time, or set
  1497. HZsound level command. Three parameters are passed to the handler: an action code, an action
  1498. bparameter, and the window name. Three action codes are currently defined: play is 8, go to time is
  1499. f12, and set sound level is 14.  (These are the codes used by the movie controller itself.)  The action
  1500. eparameter depends on the code. For play it is the play rate (rate = 0 is pause). For go to time it is
  1501. dthe destination time in the movie's time scale. For set sound level it is the sound level (0-255). A
  1502. &negative sound level indicates muting.
  1503.     statusMsg
  1504. )9N is called if an unexpected error occurs during movie playback. The parameters
  1505. H/passed are an error number and the window name.
  1506.     Examples:
  1507. Geneva
  1508. ?set windowCloseMsg of window "Race Car" to "MovieWindowClosing"
  1509.     Helvetica
  1510. QuickTime XCMDs
  1511. 12/21/94
  1512. page 
  1513. Geneva
  1514. m@set timedCallBack of window "Tiger" to "showMyPict" && savedTime
  1515. 0set cursorMsg of window "Tiger" to "CursorShape"
  1516. 4set movieControlMsg of window "Bozo" to "LimitSound"
  1517. Times
  1518. HAExamples of simple handlers defined in your card script might be:
  1519.  on MovieWindowClosing windowName
  1520. -if windowName is "Race Car" then go next card
  1521. end MovieWindowClosing
  1522. on CursorShape
  1523. set cursor to crossHair
  1524. end CursorShape
  1525. HZNote that although CursorShape above is actually passed both a mouse location and a window
  1526. gname as parameters,  it does not need to list them in its definition if it does not need to make use of
  1527. those parameters.
  1528. YThe timedCallBack can also be used with Direct movies. The window parameter will be empty
  1529. %when the call back message is called.
  1530. BQTMovie Direct,windowID,Set,timedCallBack,"showMyPict" && saveTime
  1531. H`The mouseDown message overrides the standard behavior of clicking in the movie to stop and start
  1532. Athe movie. If you still want his behavior, then you can send the 
  1533. passMouseDown
  1534.  message from
  1535. within your handler:
  1536. (on MyMouseDown pt, movieTime, windowName
  1537. if the commandKey is down then
  1538. -- toggle the mute
  1539. Bset mute of window windowName to not the mute of window windowName
  1540. '-- otherwise let the click pass through
  1541. 'send PassMouseDown to window windowName
  1542. end if
  1543. end MyMouseDown
  1544. H\The opposite behavior is true of the movieControlMsg message. The movie control command that
  1545. 1is being intercepted will be executed unless the 
  1546. cancelMessage
  1547.  message is called from your
  1548. handler.
  1549. $on LimitSound actionCode,param,wName
  1550. if actionCode = 14 then
  1551. 6if param > 128 then send cancelMessage to window wName
  1552. end if
  1553. end LimitSound
  1554. More on Controlling Movies
  1555. `When QuickTime is playing a movie it uses the movie
  1556. s current rate setting to determine how fast
  1557. ato play the movie. Sometimes this may mean that in order to maintain that rate, some movie frames
  1558. awill have to be dropped (not displayed) since the decompression and display of the previous frame
  1559.     Helvetica
  1560. QuickTime XCMDs
  1561. 12/21/94
  1562. page 
  1563. Times
  1564. Hatook too long. For some movies it is more important to see all of the frames rather than maintain
  1565. <any particular movie rate. For these movies you can set the 
  1566. seeAllFrames
  1567.  initial option (or after
  1568. the window is opened, set the 
  1569. seeAllFrames
  1570. )L. property to true). In this mode no frames are
  1571. H^dropped. They are simply displayed sequentially as fast as possible. Note, however, that sound
  1572. tracks will 
  1573.  play in this mode.
  1574. If you set the 
  1575. enableKeys
  1576. )AG property to true, you can use the standard movie controller
  1577. s keyboard
  1578. H\equivalents to control the movie. Full details can be found in the standard movie controller
  1579. documentation (
  1580. )L7in other words, I don
  1581. t know all the keyboard shortcuts
  1582. "). Note that the movie window must
  1583. HZbe the "active" window for keyboard commands be sent to the window. Clicking in the window
  1584. will make it active.
  1585. GIn addition to the loop property mentioned before you can also set the 
  1586. palindrome
  1587.  property (or
  1588. Hbhave it as an initial option). When in palindrome mode, the movie loops back and forth between the
  1589. >beginning to the end of the movie (or segment, see following).
  1590. >You can specify a segment of the movie to play by setting the 
  1591. segmentStart
  1592.  and 
  1593. segmentEnd
  1594. properties:
  1595. Geneva
  1596. +set segmentStart of window "myMovie" to 100
  1597. )set segmentEnd of window "myMovie" to 400
  1598. +set segmentPlay of window "myMovie" to true
  1599. Setting 
  1600. segmentPlay
  1601. )GK to true will cause the segment specified to be played. The times specified
  1602. Heare in movie time. If loop or palindrome is set, then the segment will be played continuously in that
  1603. emode, otherwise it will stop at the end time specified. If the end time precedes the start time, then
  1604. ^the segment will be played backwards. To exit segment play mode, set segmentPlay to false. You
  1605. Ncan have the segment loaded into RAM (as much as memory allows) by sending the
  1606. loadSegIntoRAM
  1607. )a     message:
  1608. m'send loadSegIntoRAM to window "myMovie"
  1609. You can also specify 
  1610. loadMovieIntoRAM
  1611. )o1 as an option to OpenMovie. The XCMD will attempt
  1612. HNto preload as much as the movie as possible into RAM before playing the movie.
  1613. QMany QuickTime movies have video tracks whose video compression scheme uses frame
  1614. `differences with periodic key frames. To quickly go to the next or previous key frame in a movie
  1615. you can send the 
  1616. GoNextKeyFrame
  1617. GoPrevKeyFrame
  1618.  messages.
  1619. Previously mentioned were the 
  1620. ShowController
  1621.  and 
  1622. HideController
  1623.  messages that will show
  1624. Hdor hide the movie controller. You can find out if the controller is currently visible by getting the
  1625. hasController
  1626. )MS property, which returns true or false. Another method of showing the controller is
  1627. HDby using the standard movie controller badge option. If you set the 
  1628. badge
  1629.  property to true (or set
  1630. badge
  1631. )!S initial option), then, whenever the controller is not visible a small movie icon (
  1632. called,
  1633. guess what?, a badge!
  1634. )VQ) appears in the lower left portion of the movie when the movie is paused. If you
  1635. Haclick on the badge the movie controller appears. Unfortunately there is no standard interface for
  1636. `making the controller disappear and the badge reappear. One possible scenario is to have a timed
  1637. [call back message that triggers when the movie hits the end which hides the controller. The
  1638. showPoster
  1639. )BP message will position the movie at the poster frame for the movie. You can also
  1640. specify 
  1641. showPoster
  1642. )BG as an option to OpenMovie. (The QTEditMovie XCMD allows you to set the
  1643. movie poster.)
  1644. +In the section above on Direct movies, the 
  1645. - message needed to be called as frequently as
  1646.     Helvetica
  1647. QuickTime XCMDs
  1648. 12/21/94
  1649. page 
  1650. Times
  1651. HXpossible in order for the movie to play. This is not necessary for a window movie, since
  1652. aHyperCard automatically gives the window idle time. However, if you have a script that contains a
  1653. \loop that does not exit for some time   you should send the Idle message to the movie window
  1654. from within the loop.
  1655. aFor example, the following button script sets the rate of the movie based on the horizontal mouse
  1656. bposition within the button. If the Idle message is not sent within the repeat loop, the movie will
  1657. 3come to a halt while the mouse button is held down.
  1658. Geneva
  1659. on mouseDown
  1660. global currWindow
  1661. 7if there is not a window currWindow then exit mouseDown
  1662. repeat while the mouse is down
  1663. -if the mouseLoc is within the rect of me then
  1664. %put the mouseH-the left of me into dx
  1665. Eput dx / the width of me * 2 into newRate -- set rate between 0 and 2
  1666. (set rate of window currWindow to newRate
  1667. end if
  1668. send idle to window currWindow
  1669. end repeat
  1670. end mouseDown
  1671. H^Under some circumstances, the amount of overhead used by HyperCard (or other host application)
  1672. \may cause movies to not get enough idle time and thus degrade play back performance. You can
  1673. specify the 
  1674. fastIdle
  1675.  initial option (or set the 
  1676. fastIdle
  1677. )+# property to true) and get improved
  1678. H_performance. If you specify the fastIdle option at OpenMovie time, then when idle is called the
  1679. [XCMD will go into a tight loop keeping the movie going and will not return until an OSEvent
  1680. ^occurs. This causes movies to perform better, but nothing else can go on at the same time. The
  1681. \cursor will not change shape. Only one movie will run at a time when fastIdle is active. The
  1682. `XCMD does not go into a tight loop when the movie is paused or another application is brought to
  1683. gthe front. Note that since the tight loop is interrupted by an OSEvent, you can still click on buttons,
  1684. =etc. FastIdle is available for both Direct and Window movies.
  1685. *&)Window and Movie Positioning and Resizing
  1686. ^There are a couple of additional initial options that have an effect on the window's size. The
  1687. clipTo
  1688. )$] option causes the movie to be clipped to the rectangle parameter that must follow the clipTo
  1689. keyword. If the 
  1690. showGrowBox
  1691. )U? option is specified then the movie controller will have a grow
  1692. H6box with which the user can resize the window at will.
  1693. \The initial window position is determined by the location parameter of the QTMovie OpenMovie
  1694. hcall.  If a point or one of the positioning keywords (deepest, main, etc) is specified, then the size of
  1695. hthe window will be the default size of the movie (plus the movie controller if it is visible). If a rect
  1696. eis specified then the movie will be scaled to fit into the specified rectangle and the window will be
  1697. 7sized accordingly. The one exception to this is if the 
  1698. clipTo
  1699. )$! option is included as one of the
  1700. Hdparameters. In this case the movie is still sized according to the position parameter as before, but
  1701. cthe window size and position will be that of the rectangle specified after the clipTo parameter. As
  1702. ban example, if you had two buttons on your card 
  1703.  a small button centered inside of a large button
  1704.  and you executed the following:
  1705. YQTMovie OpenMovie, plain, fileName, the rect of btn large, clipTo, the rect of btn small,
  1706. nocontroller
  1707.     Helvetica
  1708. QuickTime XCMDs
  1709. 12/21/94
  1710. page 
  1711. Times
  1712. Hayou would get a plain window the size and location of the small button in which the center of the
  1713. cmovie (whose size and location is that of the large button) is visible. Similarly, if you specified
  1714. bDirect instead of a window type in the above statement, the center portion of the movie would play
  1715. dat the size and location of the smaller button. The coordinate system of both the position parameter
  1716. 9and the clipTo option is that of the current card window.
  1717. `You can subsequently change the window size and location as well as the size and location of the
  1718. `movie within its window, or, in the case of direct movies, the size and location within the card
  1719. 6window. To change the window size or location set the 
  1720. windowRect
  1721.     windowLoc
  1722. Hcproperties. The size of the movie will not be affected by either of these, but it will maintain its
  1723. `relative location within the window. The rect or point used for these properties is again in the
  1724. bcoordinates of the card window. If you want to change the location or size of the movie within the
  1725. window, you set the 
  1726. )d    movieRect
  1727.  and 
  1728. movieLoc
  1729. )7+ properties. These do not affect the window
  1730. Hclocation or size. For example, if you doubled the size of the movieRect, the visual effect would be
  1731. bthat of zooming into the movie. If you changed the movieLoc, the effect would be that of scrolling
  1732. aor panning the movie. The coordinate system differs for these properties depending on whether the
  1733. Ymovie is a window movie or a direct movie. For a window movie, movieLoc and movieRect are
  1734. cexpressed in the coordinates of the window, thus to reset the top left corner of the movie to be at
  1735. _the top left of the window, you would set movieLoc to be 
  1736. . For direct movies, movieLoc and
  1737. 5movieRect are in the coordinates of the card window (
  1738. 0which is effectively the movie
  1739. s window so there
  1740. H&really isn
  1741. t any difference, I suppose
  1742. C). Note that the movieLoc of a window movie is always initially 0,0
  1743. Hbunless the clipTo parameter is specified, in which case the movieLoc is the difference between the
  1744. -position location and the clip rect location.
  1745. clipRect
  1746. ).O property can be set on a movie. This is useful mainly for direct movies, since
  1747. Hawindow movies can achieve the same effect by setting the movieLoc to a negative value and setting
  1748. [the window size appropriately. The clipRect property specifies a portion of the movie to be
  1749. _displayed in the window. Its coordinates are expressed in the coordinates of the movie
  1750. s window
  1751. c(the card window for direct movies). Its effect for direct movies is the same as the clipTo initial
  1752. option.
  1753. eraseOnMove
  1754. )LL property is provided for use with direct movies. It defaults to true, which
  1755. H`means that whenever a property is set that causes the displayed rectangle to move to a different
  1756. elocation or size in the card window, the previous location will be erased. If this property is set to
  1757. "false, then it will not be erased.
  1758. If you specify 
  1759. showGrowBox
  1760. )U= when you call OpenMovie, a grow box will appear in the movie
  1761. HQcontroller. You can resize the window by clicking and dragging the grow box. When
  1762. _showGrowBox has been specified, the movie will always scale to fit in the window. This behavior
  1763. Yoverrides the description above for the various window and movie positioning commands. In
  1764. ^particular, the clipTo option during OpenMovie is ignored if showGrowBox is also specified. In
  1765. ]addition the movieLoc property is not settable.  The movieRect and windowRect properties will
  1766. ^resize both the movie and the window appropriately. As a result, script control over the movie
  1767. +position is far left flexible in this mode.
  1768. "More Window Properties and Options
  1769. _The name of the movie window defaults to the name of the movie file. You can change the name of
  1770.  the movie window by setting the 
  1771. windowName
  1772.  property.
  1773. HOThe movie window can be hidden without actually closing by using the HyperTalk 
  1774. command or by setting the 
  1775. visible
  1776. )&: property to false. Likewise, you can show a hidden window
  1777. by using the 
  1778. ) 4 command or by setting the visible property to true:
  1779. Geneva
  1780. hide window currWindow
  1781.     Helvetica
  1782. QuickTime XCMDs
  1783. 12/21/94
  1784. page 
  1785. Geneva
  1786. m)set visible of window currWindow to false
  1787. show window currWindow
  1788. (set visible of window currWindow to true
  1789. Times
  1790. closeOnFinish
  1791. )QN initial option is provided so that you can open a movie, have it play through
  1792. H5once, and then close by itself. You can also set the 
  1793. closeOnFinish
  1794.  property after the window is
  1795. H^opened to have the same effect. When the end of the movie is reached, the window automatically
  1796. ]closes. Note that if you set the windowCloseMsg property (see above) then you handler will be
  1797. #called before the window is closed.
  1798. XBy default, when a window is shown, the window border is drawn and then the contents are
  1799. aerased to white before the actual window contents are displayed. If the window is being displayed
  1800. Hon a non-white background the effect can be undesirable. If you set the 
  1801. dontPaintWhite
  1802.  initial
  1803. H`option then the erase will not occur whenever the window is shown. Alternatively you can set the
  1804. dontPaintWhite
  1805. )WD property (to true or false) at any time after the window is opened.
  1806. HbIn a similar vain, when a movie window is closed, the card window behind it is told to refresh the
  1807. `area where the closed window used to be. A common situation is to have a closeCard handler close
  1808. ^the current movie window. This causes the card window to update, which is not really necessary
  1809. Qin this case since we are in the process of going to the next card.  Setting the 
  1810. dontInvalOnClose
  1811. HVproperty to true causes the card window to not update when the movie window is closed.
  1812. WNormally window movies show up in HyperCard's palette layer so that any movie window is
  1813. Halways in front of the card window. You can override this by specifying 
  1814. documentLayer
  1815.  as an
  1816. H\option to OpenMovie. The movie window will then be part of the document layer such that when
  1817. Xyou click in the card window the movie window will go behind it. Any movie window in the
  1818. ^palette layer will always be in front of any movie window in the document layer. If you have a
  1819. ^movie window in the document layer that is in front of the card window, you will need to click
  1820. Sonce in the card window to activate it before you can click on buttons on the card.
  1821. You can send the 
  1822. GoToBack
  1823.  and 
  1824.     GoToFront
  1825. )?- messages to send a movie window behind or in
  1826. Hdfront of the other windows present. The window will go to the front or back of the layer (palette or
  1827. 7document, see preceding paragraph) to which it belongs.
  1828. Replacing Movies in a Window
  1829. ^There are two ways to replace the currently playing movie in a window. The first (and simpler)
  1830. method is to set the 
  1831. newMovieFile
  1832.  property of the window:
  1833. m>Set newMovieFile of window "Movie Window" to "MyDisk:MyMovie1"
  1834. H^This will replace the currently playing movie with the new movie specified. The previous movie
  1835. awill be disposed (unless it is a queued movie, see below). The current movie rate and volume will
  1836. ]be maintained. If you had specified a rectangle rather than a point for the location when the
  1837. cwindow was originally created, then the new movie will be scaled to fit that same rectangle. If you
  1838. coriginally specified a point, then the window will be resized (if necessary) to accommodate the new
  1839. movie
  1840. s default size.
  1841. XNote that in the above example the window name is 
  1842. Movie Window
  1843. . If you are going to be
  1844. ]replacing movies in a window it is recommended that you change the name of the window to some
  1845. [generic name to avoid confusion (since the window name defaults to the name of the original
  1846. movie).
  1847. <QTMovie OpenMovie, windoid, "MyDisk:Dancing Bear", "100,100"
  1848.     Helvetica
  1849. QuickTime XCMDs
  1850. 12/21/94
  1851. page 
  1852. Geneva
  1853. m9Set windowName of window "Dancing Bear" to "Movie Window"
  1854. Times
  1855. HLA somewhat more complicated way to replace movies in a window is to use the 
  1856. queuedMovie
  1857. Hbfeature. This has the advantage that the movies are replaced more quickly since the file will have
  1858. \already been opened and data structures will have been primed for playing the movie. (Due to
  1859. \inadequacies in XWindow syntax, the commands to queue up, play, and delete queued movies are
  1860. somewhat awkward.)
  1861. bTo queue up a movie to be played later you need to set up the queued movie and save a reference to
  1862. >it. You can set up as many queued movies as memory will allow:
  1863. =Set queuedMovie of window "Movie Window" to "MyDisk:MyMovie1"
  1864.  put the result into queuedMovie1
  1865. =Set queuedMovie of window "Movie Window" to "MyDisk:MyMovie2"
  1866.  put the result into queuedMovie2
  1867. HZThese commands have no immediate effect on the window. To replace the current movie with a
  1868. queued movie you set the 
  1869. activeMovie
  1870.  property:
  1871. m8Set activeMovie of window "Movie Window" to queuedMovie1
  1872. HUNormally when a movie is replaced by another movie, either by setting newMovieFile or
  1873. YactiveMovie, the previous movie is disposed. However, queued movies are not disposed when
  1874. ^they are replaced. If you need to dispose of a queued movie, you must explicitly dispose it by
  1875. setting 
  1876. disposeQueuedMovie
  1877. .[winner of the 1993 most awkward syntax award]
  1878. m?Set disposeQueuedMovie of window "Movie Window" to queuedMovie2
  1879. HbIf the queuedMovie you dispose is the currently playing movie, the next queued movie is played. If
  1880. Ethere are no other queued movies, the window is closed automatically.
  1881. UWhen you close a window with queued movies, all movies are disposed of automatically.
  1882. ZAn example of where the queued movie feature might come in handy might be for an adventure
  1883. Ugame where you would queue up movies of adjacent rooms as you enter a new room, while
  1884. -disposing movies of no longer adjacent rooms.
  1885. If you set the 
  1886. replaceTime
  1887. )DC property before setting newMovieFile or activeMovie, the new movie
  1888. H!will start at the specified time.
  1889. Advanced Window Type Options
  1890. _In addition to the previously mentioned standard window types that you can use in the OpenMovie
  1891. [call, there are two other window type options available. You can pass an integer value that
  1892. ]corresponds to a window type other than the standard ones offered. Note that this window type
  1893. [value is determined by multiplying the corresponding WDEF id by 16 and then adding any WDEF
  1894. \specific value between 0 and 15. For example, my System File (and possibly yours, too) has a
  1895. ZWDEF resource whose id is 1. If I call QTMovie OpenMovie with a window type of 16, I get a
  1896. around rect type window with a black title bar. Using other values between 16 and 31 has an effect
  1897.  on the roundness of the corners.
  1898. <The other advanced option for the window type is to specify 
  1899. g    movieWDEF
  1900. . If you use
  1901.     Helvetica
  1902. QuickTime XCMDs
  1903. 12/21/94
  1904. page 
  1905. Times
  1906. HZmovieWDEF for the window type, the movie will appear in a window whose shape is determined
  1907. dby the clip region of the movie. For normal rectangular movies the appearance will be like the plain
  1908. _type above. For movies with more interesting clip regions you will get a window such as the one
  1909. below:
  1910. Vjpeg
  1911. Photo - JPEG
  1912. AppleMark
  1913. !,!#'(***
  1914. .1-)1%)*(
  1915. ((((((((((((((((((((((((((((((((((((((((((((((((((
  1916. %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz
  1917. &'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz
  1918. *xkAX-
  1919. bPFI    
  1920. (BqT{
  1921. ;M/ck
  1922. WocQb
  1923. ue2XH
  1924. Cwc<W
  1925. I^    >FG
  1926. E8dt`
  1927. nNp     
  1928. ld+)*8
  1929. =L@(h
  1930. nH8`W
  1931. I!y<z
  1932. gxaQ'
  1933. EC1p9;pq
  1934. sS6^    
  1935. !.&    co>
  1936. Ji>fT
  1937. uo2;[
  1938. kTsed
  1939. T'&p;
  1940. A+`c$s
  1941. aW8%|
  1942. F3]8Z
  1943. 2N8<q
  1944. wR0t0
  1945. ytv<7
  1946. X\<j|
  1947. {g=sV
  1948. e$dC`
  1949. zqRXhV
  1950. i~7rH
  1951. lu:Zn
  1952. Nx## 
  1953. hYrxROO
  1954. XdVZ|
  1955. L~UGQ
  1956. v+]hGc
  1957. m*`<r!9V\`
  1958. ,>PNX
  1959. >/[iM
  1960. 4)'T&(
  1961. QuickTime
  1962.  and a
  1963. Photo - JPEG decompressor
  1964.  are needed to see this picture
  1965. FAdditional options are available for this window type. If you specify 
  1966. cmdKeyDraggable
  1967.  in the
  1968. HYoptions part of the OpenMovie command, then you can drag the window about by clicking and
  1969. Vdragging inside the window while holding down the command key. You can always drag the
  1970. \window by clicking anywhere on the border and dragging. This can be a bit tough on a 1 pixel
  1971. Rborder. However, you can also specify a border width in the OpenMovie command. The
  1972. borderWidth
  1973. )GK option allows you to specify a width between 0 and 6. Zero will give you a
  1974. H[window with no border. In fact, the Borderless window type option uses the movieWDEF with a
  1975. border width of zero.
  1976. Geneva
  1977. OQTMovie OpenMovie, MovieWDEF, "HD:Movies:AppleMovie", "10,10", cmdKeyDraggable,
  1978. borderWidth,2,noController
  1979. l\-- starts a movie in an window the shape of the movie AppleMovie, without a controller.  The
  1980. Cborder will be 2 pixels thick, and the window is cmd key draggable.
  1981. H5You can set the color of the MovieWDEF window border.
  1982. OSet windowBorderColor of window "AppleMovie" to "45000,0,0" -- makes border red
  1983. windowBorderColor
  1984. )t< property will only work for movieWDEF windows. The color is
  1985. H^expressed as an RGB triplet (where each component is a value between 0 and 65535). If you want
  1986. bto have the window start out in a particular color, specify Invisible on OpenMovie, set the border
  1987. !color, and then do a show window.
  1988. ^The movieWDEF requires that a small stub WDEF (id#999) resource be in the stack. This resource
  1989. `is included in the QTMovie stack, but if the resource is not present the XCMD will create one on
  1990. Dthe fly and include it in the stack. The resource is six bytes long.
  1991. [The QTEditMovie XCMD described below can be used to set a permanent clip region on a movie.
  1992. 5To set a temporary clip on the movie you can set the 
  1993. bitMapClip
  1994.  property or send the
  1995. pasteBitMapClip
  1996. )^P message. Both of these use a bit map to create a region that is used to set the
  1997.     Helvetica
  1998. QuickTime XCMDs
  1999. 12/21/94
  2000. page 
  2001. Times
  2002. H]movie's clip region. For example if you draw a solid black circle in the card window and then
  2003. `place a transparent button over it, you can execute the following lines to get a circular window
  2004. movie:
  2005. Geneva
  2006. LQTMovie OpenMovie, MovieWDEF, "HD:Movies:NormalMovie", loc, cmdKeyDraggable,
  2007. noController,invisible
  2008. l1if "Error" is in the result then <error handling>
  2009. Dset bitMapClip of window NormalMovie to the rect of btn circleButton
  2010. show window NormalMovie
  2011. H`Every pixel with in the specified rectangle will be used to create the region, so you need to be
  2012. ]careful what rectangle you specify. The pasteBitMapClip message can be used to get the bitmap
  2013. _from the clipboard rather than having to have the bitmap visible on the card. One way to do the
  2014. babove without having the bitmap visible on the screen would be to have the button be opaque rather
  2015. than transparent:
  2016. on ShowFunnyWindow
  2017. set lockScreen to true
  2018. choose select tool
  2019. Edrag from topLeft of btn circleButton to botRight of btn circleButton
  2020. domenu copy picture
  2021. choose browse tool
  2022. <QTMovie OpenMovie, MovieWDEF, "HD:Movies:NormalMovie", loc, 
  2023. 'cmdKeyDraggable, noController,invisible
  2024. }1if "Error" is in the result then <error handling>
  2025. *send PasteBitMapClip to window NormalMovie
  2026. show window NormalMovie
  2027. end ShowFunnyWindow
  2028. HZThe bitMapClip property and pasteBitMapClip message can also be used with Direct movies to
  2029. !create interesting shaped movies.
  2030. Track Oriented Properties
  2031. dQuickTime movies are structured as a set of movie tracks, each track being of a particular type. The
  2032. Xmost common QuickTime movies contain one video track and one sound track. However, it is
  2033. dquite possible to have multiple video and sound tracks as well as text tracks, music tracks, and any
  2034. Xother type that might be developed. The QTEditMovie XCMD described later has a number of
  2035. Vfacilities for manipulating individual tracks as well as a special track display mode.
  2036. _Within QTMovie, there is a limited facility to get information about and temporarily manipulate
  2037. ]tracks within a movie. You can find out how many tracks there are in the movie by getting the
  2038.     numTracks
  2039. )>S property. Many of the track properties or messages operate on the "current track".
  2040. H)You set the current track by setting the 
  2041. currTrackNum
  2042. )R* property. The first track is track number
  2043. HWone. You can find out the four character track type of the current track by getting the
  2044. currTrackType
  2045. )ST property. Video tracks are 'vide', sound tracks are 'soun', text tracks are 'text',
  2046. H`and music tracks are 'musi'. The following function returns the number of text tracks in a given
  2047. movie:
  2048. !function numTextTracks windowName
  2049.     Helvetica
  2050. QuickTime XCMDs
  2051. 12/21/94
  2052. page 
  2053. Geneva
  2054. }/put numTracks of window windowName into nTracks
  2055. put 0 into textTracks
  2056. repeat with i = 1 to nTracks
  2057. *set currTrackNum of window windowName to i
  2058. 7if the currTrackType of window windowName = "text" then
  2059. add 1 to textTracks
  2060. end if
  2061. end repeat
  2062. return textTracks
  2063. end numTextTracks
  2064. Times
  2065. H_Tracks in a QuickTime movie can be enabled or disabled. Disabled tracks are not played. You can
  2066. /selectively enable or disable tracks using the 
  2067. enableTrack
  2068.  and 
  2069. disableTrack
  2070.  properties. You set
  2071. Hathe value of the property to the number of the track you wish to enable or disable. Tracks can be
  2072. acombined into what are called alternate groups. When tracks are combined into an alternate group,
  2073. aat most one member of the group is enabled at a time. You can enable or disable a group of tracks
  2074. by setting the 
  2075. enableGroup
  2076.  and 
  2077. disableGroup
  2078. )L) properties. You pass as a value to these
  2079. H^properties the number of any track in the group. When you set disableGroup, all members of the
  2080. Zgroup shared by the track number you pass in are disabled. What happens for enableGroup is
  2081. ]somewhat less intuitive. The one appropriate track belonging to the group shared by the track
  2082. Znumber you pass in is enabled. For example, if you have a group of three sound tracks, one
  2083. [English, one French, and one Spanish and you set enableGroup with the number of the English
  2084. ^track, the actual track enabled will depend on what the current movie language is. The current
  2085. \movie language is determined by QuickTime when the movie is opened by looking at the current
  2086. Hsystem language. You can subsequently reset the language by setting the 
  2087. movieLanguage
  2088. Hcproperty to a particular region code. (Region codes are listed on page 14-133 of Inside Mac vol 6.)
  2089. ]When you set the movieLanguage property, QuickTime will automatically enabled the appropriate
  2090. _track of any grouped tracks and disable all other tracks in the group unless all members of the
  2091. agroup were already disabled in which case they all remain disabled. You can get a list of all the
  2092. 0languages represented in a movie by getting the 
  2093. movieLanguages
  2094.  property. Another use of
  2095. Haalternate groupings of tracks is to group video tracks according to certain quality and bit depth
  2096. \characteristics. For example, you can have one set of video tracks for color displays and an
  2097. +alternate set for black and white displays.
  2098. dEvery track is assigned a layer number that determines in what order it is displayed with respect to
  2099. Qthe other tracks. You can alter the layering of the current track by setting the 
  2100. currTracklayer
  2101. HYproperty to a layer number. Layer numbers range from -32,768 to 32,767 with lower numbers
  2102. bbeing closer to the front. You can change the layer number of all members of an alternate group at
  2103. once by setting the 
  2104. currGroupLayer
  2105. )[: property. All tracks that belong to the same group as the
  2106. Hccurrent track will have their layer changed. You can send the current track to the front or back by
  2107. sending the 
  2108. bringTrackToFront
  2109. sendTrackToBack
  2110. )e$ messages. As well, you can send all
  2111. H9members current track's group forward or back by sending 
  2112. bringGroupToFront
  2113. sendGroupToBack
  2114. HGYou can get and set individual volume levels of sound tracks using the 
  2115. currTrackAudioLevel
  2116. HYproperty. Levels range from 0 (silent) to 256 (full volume). With QuickTime 1.6 and Sound
  2117. <Manager 3.0, you can use higher values to amplify the sound.
  2118. Text Oriented Properties
  2119. _Text tracks were introduced in QuickTime 1.5 (and substantially improved in QuickTime 1.6). The
  2120. VQTEditMovie XCMD allows you to add new text tracks to a movie. Included in QTMovie are
  2121. gproperties and messages for extracting text, searching for text, and highlighting text. All of the text
  2122. itrack functions will first look at the current track. If that is a text track then that will be the track
  2123.     Helvetica
  2124. QuickTime XCMDs
  2125. 12/21/94
  2126. page 
  2127. Times
  2128. HUused. If it is not a text track, then the first text track in the movie will be used.
  2129. HTo extract the text at a particular time in the movie you first set the 
  2130. textSampleTime
  2131.  property to
  2132. H*the movie time you want. Then you get the 
  2133. currTextSample
  2134.  property. A string is returned
  2135. Hdrepresenting the text at that time. Style information is not available. If you set textSampleTime to
  2136. 1 to then currTextSample will use the movie's current time.
  2137. %To search for text you first set the 
  2138. findString
  2139.  and 
  2140.     findFlags
  2141. )6$ properties. The findString property
  2142. Hdis simply the text you want to find. FindFlags is a value you get by adding together individual flag
  2143. Nvalues depending on how you want the text to be searched. The flag values are:
  2144. R1 - allow the current sample to be searched; otherwise start search at next sample
  2145. "2 - make the search case sensitive
  2146. #4 - search in the reverse direction
  2147. B8 - wrap around search (when end hit, start at beginning of movie)
  2148. ^16 - use the offset into last found sample to begin the search (implies search current sample)
  2149. HaFor example, if you wanted a case sensitive, wrap around search you would set the findFlags to 10
  2150. H(2+8). Once you have set the findString and findFlags, you can send the 
  2151. findNextText
  2152. )K     message.
  2153. HeThe search is always started from the current movie time. The result will contain a string consisting
  2154. _of three numbers separated by spaces. The first number is the movie time of the found text; the
  2155. bsecond number is the duration of the text sample; and the third number is the offset into the text
  2156. asample of the found text. For example suppose a movie contained the text sample "Fee fie foe fum"
  2157. `at time 600 with a duration of 100, and a current movie time of 0. The following script fragment
  2158. dwill find the text and set the movie time to the found time (note that findNextText will not set the
  2159. movie time for you):
  2160. Geneva
  2161. ,set findString of window currWindow to "foe"
  2162. 'set findFlags of window currWindow to 0
  2163. &send findNextText to window currWindow
  2164. put the result into info
  2165. if word 1 of info >= 0 then
  2166. 3set currTime of window currWindow to word 1 of info
  2167. end if
  2168. HcIn this case the result will be "600 100 9". If the text is not found, all three values will be -1.
  2169. hBy default the current track is the only track searched (or the first text track if the current track is
  2170. Snot a text track). You can have findNextText search multiple tracks by setting the 
  2171. searchType
  2172. H]property. Three values are allowed: 0 means search one track; 1 means search all enabled text
  2173. ctracks; and 2 means search all of the text tracks (enabled or not). When the search is complete, if
  2174. bthe text was found, then the current track is set to the track where the nearest matching text was
  2175. found.
  2176. &You can highlight text by sending the 
  2177. hiliteText
  2178. )6& message. You first need to set up the
  2179. H:highlighting by setting various highlight properties. The 
  2180. textHiliteTime
  2181.  property sets the movie
  2182. H*time of the sample to be highlighted. The 
  2183. textHiliteBegin
  2184. )V' property sets the offset into the text
  2185. H.sample of the beginning of the highlight. The 
  2186. textHiliteEnd
  2187. )K# property sets the ending offset of
  2188. Hgtext to be highlighted. If you follow the previous script lines with the following lines the found text
  2189. will be highlighted:
  2190. 9set textHiliteTime of window currWindow to word 1 of info
  2191. :set textHiliteBegin of window currWindow to word 3 of info
  2192. Xset textHiliteEnd of window currWindow to word 3 of info + 3 -- number of chars in "foe"
  2193.     Helvetica
  2194. QuickTime XCMDs
  2195. 12/21/94
  2196. page 
  2197. Geneva
  2198. m$send hiliteText to window currWindow
  2199. Times
  2200. H`The highlight color will default to the system default. If you wish to choose your own highlight
  2201. color you can set the 
  2202. hiliteColor
  2203. )=C property. As with other color properties, it is an RGB triplet. If
  2204. HFyou want to return to the default highlight color you need to set the 
  2205. useHiliteColor
  2206.  property to
  2207. HDfalse. It is set to true automatically when you set the hiliteColor.
  2208. Movie Picts
  2209. QYou can copy an image of the current movie frame to the clipboard by sending the 
  2210.     copyFrame
  2211. HPmessage. Likewise you can copy the movie poster to the clipboard by sending the 
  2212. copyPoster
  2213. HMmessage. If you prefer to write the image out to a pict file you can set the 
  2214. copyFrameToFile
  2215. copyPosterToFile
  2216. )dM properties. You supply the name of the file for the property's value. If you
  2217. first set the 
  2218. pictCreator
  2219. )?: property then the pict file created by copyFrameToFile or
  2220. HgcopyPosterToFile will have its creator set to that value. The default value is "ppxi", the signature of
  2221. Ythe Picture Compressor application. For example the following script will create an Adobe
  2222. 3Photoshop pict file of the movie at the given time:
  2223. (on MakePhotoShopPict movieTime, fileName
  2224. global currWindow
  2225. .set currTime of window currWindow to movieTime
  2226. .set pictCreator of window currWindow to "8BIM"
  2227. 4set copyFrameToFile of window currWindow to fileName
  2228. end MakePhotoShopPict
  2229. H$Miscellaneous Properties and Options
  2230. You can set the 
  2231. )K    foreColor
  2232.  and 
  2233.     backColor
  2234. ):6 properties to colorize the movie controller. This was
  2235. H_more straight forward with the QuickTime 1.0 black and white controller. With the QuickTime 1.5
  2236. d(and beyond) color controller, setting these properties may have weird effects. The values for these
  2237. properties are RGB triplets.
  2238. $Another OpenMovie initial option is 
  2239. useCustomCLUT
  2240. )a*. When this is specified, if the movie has
  2241. H]a custom color look up table associated with it, that palette will be assigned to the window.
  2242. cacheMovie
  2243. )BN property, when set to true, sets an internal QuickTime flag that causes movie
  2244. H]data that has already been played to remain in memory longer. This may improve performance if
  2245. Qyou will be randomly accessing the movie, but memory may be used up more quickly.
  2246. 7The size of the movie file is available by getting the 
  2247. fileSize
  2248. )+" property. The size returned is in
  2249. bytes.
  2250. bYou can obtain information about the current video track (or the first video track, if the current
  2251. +track is not a video track) by getting the 
  2252. videoCompressorInfo
  2253.  property. It returns a return
  2254. Hbdelimited list of information about the video track. The first line is the codec type (eg: "rpza",
  2255. _"jpeg"). The second and third lines are the spatial and temporal quality settings (0-1023). The
  2256. Rfourth line is the bit depth. The fifth line is the codec name (eg: Video, Photo).
  2257. )For the really perverse, you can get the 
  2258. movieHandle
  2259.  and 
  2260. movieController
  2261.  properties.
  2262. HbReturned are the actual handles to the movie and movie controller data. This is only useful if you
  2263. Xplan to pass the value to a custom XCMD that expects a movie or movie controller handle.
  2264. version
  2265. )*P property returns the date that the QTMovie XCMD was last compiled. You can also
  2266.     Helvetica
  2267. QuickTime XCMDs
  2268. 12/21/94
  2269. page 
  2270. Times
  2271. HEget this value by executing "QTMovie version" and getting the result.
  2272. ,Using the Movie Controller for Direct Movies
  2273. cBy default, there is no movie controller displayed when you start up a Direct movie. The reason for
  2274. bthis is that since the movie is not playing in an XWindow, mouse clicks are not sent to the movie.
  2275. ^However, you can have a movie controller if you place a button behind the movie that sends the
  2276.     mouseDown
  2277. )EQ message to QTMovie. You need to also pass a point in global coordinates with the
  2278. HHmouseDown call. To get the movieController to show up, you need to call 
  2279. showController
  2280. . For
  2281. Heexample, the following script opens a Direct movie with a controller. It assumes there is a rectangle
  2282. ^style button on the card called movieButton, which it resizes to fit the movie and controller.
  2283. Geneva
  2284. on OpenDirectMovie fileName
  2285. global movieID
  2286. ?QTMovie OpenMovie, Direct, fileName, topLeft of btn movieButton
  2287. get the result
  2288. )if "error" is in it then <error handling>
  2289. else put it into movieID
  2290. 'QTMovie Direct, movieID, Get, movieRect
  2291. put the result into r
  2292. B-- make the rect 1 bigger all around to make a frame for the movie
  2293. 7-- Add 16 to the bottom to make room for the controller
  2294. subtract 1 from item 1 of r
  2295. subtract 1 from item 2 of r
  2296. add 1 to item 3 of r
  2297. add 16 to item 4 of r
  2298.  set rect of btn movieButton to r
  2299. 'QTMovie Direct, movieID, showController
  2300. end OpenDirectMovie
  2301. HaThe script for movieButton must convert the mouse location to global coordinates and then send it
  2302. to QTMovie:
  2303. on mouseDown
  2304. put the mouseLoc into pt
  2305. +add the left of card window to item 1 of pt
  2306. *add the top of card window to item 2 of pt
  2307. global movieID
  2308. &QTMovie Direct, movieID, mouseDown, pt
  2309. end mouseDown
  2310. H^You can have a movie controller in Macromind Director by placing a similar mouseDown script in
  2311. a cast member behind the movie:
  2312. 1on mouseDown -- 
  2313.  MacroMind Director script 
  2314. 'put the stageLeft + the mouseH into ptH
  2315. &put the stageTop + the mouseV into ptV
  2316. put ptH & "," & ptV into pt
  2317. global movieID
  2318. ,QTMovie ("Direct", movieID, "mouseDown", pt)
  2319. end mouseDown
  2320.     Helvetica
  2321. QuickTime XCMDs
  2322. 12/21/94
  2323. page 
  2324. H)The DirectWindow Option for Direct Movies
  2325. Times
  2326. 5An OpenMovie option specific to Direct movies is the 
  2327. directWindow
  2328.  option. If you specify
  2329. H\directWindow followed by a window name then the Direct movie will appear in the named window
  2330. [rather than the card window. This could be useful if used with the Palette Maker feature of
  2331. HyperCard 2.0.
  2332. %The PlotPath Feature of Direct Movies
  2333. cA fun feature of Direct movies is the ability to "paint" the movie onto the card window. You can do
  2334. \this by having a button behind a direct movie whose mouseDown script moves the button as the
  2335. Pmouse is dragged and also resets the movieLoc of the movie to follow the button.
  2336. plotPath
  2337. )/M message allows you to have the movie automatically painted across the window
  2338. Hbbetween two specified points. You need to first set up several properties before calling plotPath.
  2339. pathStartPt
  2340.  and 
  2341.     pathEndPt
  2342. ):? properties specify the begin and end points in the card window
  2343. H&along which to display the movie. The 
  2344. pathStartTime
  2345.  and 
  2346. pathEndTime
  2347.  properties specify the
  2348. HIsegment of the movie you want to play (default is the entire movie). The 
  2349. pathNumFrames
  2350. HQproperty indicates how many steps there are between the start and end points. The
  2351. pathPlayFrames
  2352. )ZM property, if set to true, tells the XCMD to play the movie as the frames are
  2353. H`splatted onto the screen, otherwise just the necessary frames are displayed. By default, a mouse
  2354. +click will cancel the plot. If you set the 
  2355. abortPlotPathOnClick
  2356. ){  property to false, then a click
  2357. will not stop the plot.
  2358. ^If you set up these properties and then send the plotPath message, the specified frames of the
  2359. bmovie will be splattered across your screen. For example you could have a button that contains the
  2360. following script:
  2361. Geneva
  2362. on mouseUp
  2363. KQTMovie OpenMovie, Direct, "MyHD:MyMovie", the rect of btn startBtn, Paused
  2364. put the result into movieID
  2365. if "Error" is in movieID then
  2366. answer movieID
  2367. exit mouseUp
  2368. end if
  2369. BQTMovie Direct,movieID,Set,pathStartPt,the topLeft of btn startBtn
  2370. >QTMovie Direct,movieID,Set,pathEndPt,the topLeft of btn endBtn
  2371. +QTMovie Direct,movieID,Set,pathNumFrames,20
  2372. QTMovie Direct,movieID,PlotPath
  2373. QTMovie Direct,movieID,Dispose
  2374. end mouseUp
  2375. HaThis would spread out 20 frames (evenly distributed throughout the movie) along a path defined by
  2376. ^the top left corner of two buttons, startBtn and endBtn. Note that the final location will not
  2377. enecessarily exactly coincide with the end point, due to integral placements of the frames. If you set
  2378. dpathPlayFrames to true, then the intervening frames will be played at normal speed at the splattered
  2379. :positions. If audio is turned on, you will hear the movie.
  2380.     Helvetica
  2381. QuickTime XCMDs
  2382. 12/21/94
  2383. page 
  2384. The QTEditMovie XCMD
  2385. Times
  2386. *&VThe QTEditMovie XCMD provides a variety of editing functions for QuickTime movies. The
  2387. `QTEditMovie window displays the movie along with a graphical representation of the tracks within
  2388. `the movie. This display allows you to select individual tracks which you can then cut, copy, and
  2389. `paste, as well as perform many other functions.You also have control over collecting tracks into
  2390. [alternate groups. QTEditMovie allows you to add new sound tracks by capturing sound from an
  2391. _audio digitizer or copying from a sound resource. You can also add new text tracks and add text
  2392. samples to the track.
  2393. The QTEditMovie Window
  2394. EYou open a new QTEditMovie window by executing the following command:
  2395. Geneva
  2396. 6QTEditMovie fileName, windowType, location, [,options]
  2397. H[As with QTMovie, you specify the full path name of the movie file. You also supply a window
  2398. Ytype. The window type can be one of the following: Document, Windoid, TallWindoid, Plain,
  2399. UDialog, or AltDialog. You can also supply the id of your own WDEF. The Borderless and
  2400. UMovieWDEF options of QTMovie are not supported by QTEditMovie. The location parameter
  2401. Wmust be a point expressed in the coordinates of the card window. There are two optional
  2402. parameters: 
  2403. newMovie
  2404.  and 
  2405.     invisible
  2406. )1:. If you specify newMovie, then a new, empty movie file is
  2407. Hfopened using the file name supplied. If there is a current file by that name it will be deleted, so be
  2408. ^careful. If invisible is specified, then the window will initially be hidden. You can make the
  2409. Mwindow visible by sending a show window windowName command or by setting the 
  2410. visible
  2411. property of the window to true.
  2412. Vjpeg
  2413. Photo - JPEG
  2414. AppleMark
  2415. !,!#'(***
  2416. .1-)1%)*(
  2417. ((((((((((((((((((((((((((((((((((((((((((((((((((
  2418. %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz
  2419. &'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz
  2420. MnLQ_j
  2421. qs+I#
  2422. ^m@3-
  2423. S{]'H
  2424. HnI<c
  2425. jDf1&
  2426. 8\W@d
  2427. *FWw 
  2428. s^%\\
  2429. iF-J'
  2430. pJc9#
  2431. {\%#%Y
  2432. <c_|?
  2433. J]SSmB$
  2434. T6[#n21
  2435. VF?XN
  2436. J>H<g
  2437. 5Dv$G
  2438. P09,>
  2439. `n28br3
  2440. aqx~C
  2441. o!9+-
  2442. .&HaB
  2443. Ea<=9t
  2444. _bxcX_
  2445. 7co'=rT
  2446. .68J(
  2447. %{=tR
  2448. 5=\6I
  2449. OOn?*&
  2450. =O&O0
  2451. -)l5{?
  2452. Eow<*
  2453. (l9No
  2454. Xb,R0NB
  2455. b>vo#
  2456. *##,yT2d,
  2457. kauqp
  2458. R6:)S
  2459. xBME#
  2460. 0}+_N
  2461. 9 u46
  2462. 62,{Y@
  2463. p.%e\
  2464. n=?Pt
  2465. A8PqU
  2466. Dbe`H
  2467. e@    P2
  2468. \xR=Je
  2469. 5zMyo
  2470. KkYg7
  2471. Uc`H-
  2472. QuickTime
  2473.  and a
  2474. Photo - JPEG decompressor
  2475.  are needed to see this picture
  2476. H]When you open the QTEditMovie window, there a few properties you can set that will affect the
  2477. display. If you set the 
  2478. displayTracks
  2479. )O9 property to true, then a graphical representation of the
  2480. HKtracks within the movie will be displayed at the bottom of the window. The 
  2481. displayTrackNums
  2482. HMproperty determines whether the tracks have their track number displayed. The
  2483. displayGroupNums
  2484. )nF property tells whether to to display group numbers. The display shown
  2485.     Helvetica
  2486. QuickTime XCMDs
  2487. 12/21/94
  2488. page 
  2489. Times
  2490. Hdabove has all of these properties set to true. The grow icon in the lower right of the window allows
  2491. byou to grow or shrink the track display portion of the window vertically. If there are more tracks
  2492. dthan can fit in the display, a scroll bar will appear, allowing you to scroll down to see all of the
  2493. Otracks. The grow icon in the movie controller is made visible when you set the 
  2494. growable
  2495. )4     property
  2496. HWto true. Dragging this icon grows the movie rectangle and the window will resize itself
  2497. appropriately.
  2498. bThe track display consists of colored representations of each track in the movie. Currently, video
  2499. dtracks are red, sound tracks are light blue, text tracks are orange, music tracks are green, and any
  2500. eother type is gray. The right extent of the track in the display indicates the duration of the track.
  2501. aGaps in the track display show where no samples for that track exist. When a selection is made in
  2502. athe movie controller, the corresponding area in the track display is shaded. The small numbers on
  2503. cthe very left of the display are the track numbers. The boxes to the left of each track are used to
  2504. benable or disable each track. When the box is filled in, the track is enabled. You can click on an
  2505. eenable box to toggle its state. Note that if you enable or disable a displayable track (such as video
  2506. ]or text) the movie rectangle may change. The window is immediately resized to reflect the new
  2507. bmovie rectangle. This has the unfortunate consequence that the place you just clicked (the track's
  2508. ]enable box) might no longer be under the mouse location. The small numbers immediately to the
  2509. cleft of a track are the group number. Group numbers are only displayed for tracks that belong to an
  2510. `alternate group. The number assigned to a particular group is arbitrary and is used simply to be
  2511. aable to identify those tracks belonging to the same group. In fact, if there were three groups of
  2512. Xtracks numbered 1 to 3, and the second group was 
  2513. ungrouped
  2514. , then the third group would
  2515. 9suddenly become group number 2. You can make a track the 
  2516. current track
  2517.  by clicking on the track
  2518. Heeither in the movie itself (if it is displayable), or in the track display area. The current track is
  2519. `identified by the small stepper triangles to either side of the track. If the current track is a
  2520. edisplayable track then it is outlined in the movie display. You can click on the stepper triangles to
  2521. _slide the track forward or backward in movie time. The details of this are discussed later. The
  2522. ^current track is the target of many of the commands you can send that are discussed below. You
  2523. .can also set the current track by setting the 
  2524. currTrackNum
  2525. )R& property to the number of the desired
  2526. track:
  2527. Geneva
  2528. *set currTrackNum of window currWindow to 3
  2529. HcWhen you click in the movie to select a displayable track, it is outlined in blue. If you click and
  2530. `drag, you can change the location of the track within the movie rectangle. A gray outline of the
  2531. ^track is displayed as you move the mouse. When you release the mouse button, the track will be
  2532. bplaced at the new location. If you drag outside of the window, the window will be grown to fit the
  2533. new dimensions of the movie.
  2534. ,Movie Control and Information in QTEditMovie
  2535. aAs with QTMovie, you can control the movie using the standard movie controller. The controller is
  2536. ^always visible. The keyboard controls are also always on, which allow you to control the movie
  2537. ]using the keyboard when the movie window is the active window. In addition, with QTEditMovie,
  2538. fthe editing capabilities of the movie controller are activated, allowing you to make selections in the
  2539. `controller using the shift key. There are a limited number of properties and messages to control
  2540. Wmovie playback or get information about the movie.You can set the following properties:
  2541. currTime
  2542. )R@- get or set (in the movie's time scale) the current time (does 
  2543.  pause)
  2544. )R2- turns on or off loop mode (set to true or false)
  2545. currSelection
  2546. )R7- set the movie selection. Format: beginTime && endTime
  2547. segmentPlayMode
  2548. )m8- when set to true, only the current selection is played
  2549. duration
  2550. )R#- returns the duration of the movie
  2551. movieScale
  2552. )R - returns the movie
  2553. s time scale
  2554.     Helvetica
  2555. QuickTime XCMDs
  2556. 12/21/94
  2557. page 
  2558. Times
  2559. H.The following messages also control the movie:
  2560. Geneva
  2561. - play the movie
  2562. pause
  2563. - pause the movie
  2564. Cut, Copy, Paste and More
  2565. ^There are a number of messages you can send to perform various editing functions. Some operate
  2566. gon the movie as a whole, while others only affect the current track. For a particular track the editing
  2567. Wcommand may affect the whole track or only the current selection within the track. The 
  2568. H`message copies the current movie selection (all tracks) onto the clipboard. The same function is
  2569. Yexecuted if you select Copy from HyperCard
  2570. s Edit menu, if the movie window is the active
  2571. #window. Likewise, you can send the 
  2572. 5 message. This will copy the current selection to the
  2573. H+clipboard and clear it from the movie. The 
  2574. clear
  2575. 3 message will clear the selection. You can cut just
  2576. H)the current visible frame by sending the 
  2577. cutCurrFrame
  2578. )N& message. The duration of the frame is
  2579. HLautomatically calculated for you. This affects all tracks at that time. The 
  2580. copyTrackSelection
  2581. HNmessage will copy the selected portion of the current track to the clipboard. 
  2582. CutTrackSelection
  2583. H8will cut the selected portion of the current track. The 
  2584.     copyTrack
  2585.  message will copy the entire
  2586. H$current track to the clipboard. The 
  2587. cutTrack
  2588. )15 message will copy the current track to the clipboard
  2589. Hband then delete the track from the movie. When a track is deleted, its representation in the track
  2590. Bdisplay is removed, and the window size is adjusted, if necessary.
  2591. cWhat all of these cut and copy messages actually place on the clipboard is a movie representing the
  2592. _copied portion of the source movie. For example if copyTrack is sent, then a one track movie is
  2593. gcreated and placed on the clipboard. The data that is used to display the track is not actually copied,
  2594. conly a reference to the data. The paste messages that follow only paste a reference to the original
  2595. gdata. Thus, if you copy a track from one file and paste it into another, the second file will contain a
  2596. !reference back to the first file.
  2597. paste
  2598. W message pastes the movie on the clipboard into the destination movie. (The destination
  2599. H`movie is the movie belonging to the window to which the paste message is sent.) The pasted movie
  2600. cis inserted at the current time of the destination movie. If you do not want the clipboard contents
  2601. 9inserted, but rather added in parallel, you can send the 
  2602. % message. New tracks are added to the
  2603. H.movie to accommodate the clipboard movie. The 
  2604.     addScaled
  2605. )9' message will also add in parallel, but
  2606. HAthe new tracks will be scaled to fit the current movie selection.
  2607. WThe following script will create a new file that is the merge of two given movie files:
  2608. ,on mergeMovies volume, file1, file2, newFile
  2609. 5QTEditMovie volume & file1, windoid, "0,0", invisible
  2610. 5QTEditMovie volume & file2, windoid, "0,0", invisible
  2611. 9QTEditMovie volume &  newFile, windoid, "30,30", newMovie
  2612. Bset currSelection of window file1 to 0 && duration of window file1
  2613. send copy to window file1
  2614. send paste to window newFile
  2615. Bset currSelection of window file2 to 0 && duration of window file2
  2616. send copy to window file2
  2617. -set currSelection of window newFile to 0 && 0
  2618. <set currTime of window newFile to duration of window newFile
  2619. send paste to window newFile
  2620. close window file1
  2621.     Helvetica
  2622. QuickTime XCMDs
  2623. 12/21/94
  2624. page 
  2625. Geneva
  2626. close window file2
  2627. /send saveChanges to window newFile -- see below
  2628. end mergeMovies
  2629. Times
  2630. H_Note that in the example above, the two source movies
  2631.  windows were made invisible so that only
  2632. \the merged movie is seen. The merged movie file created will be quite small. It will contain
  2633. $references to the two source movies.
  2634. Saving Changes
  2635. ZWhen you make a change using on of the editing commands, the change is not saved until you
  2636.     send the 
  2637. saveChanges
  2638. )IJ message. This will update the movie resource of the file on disk. You can
  2639. H/find out if a movie has changed by getting the 
  2640. movieChanged
  2641. )S! property. Alternatively, you can
  2642. set the 
  2643. autoSave
  2644. )3D property to true, which will cause changes to the movie to be saved
  2645. HUautomatically when the movie window is closed. It nevertheless is a good idea to send
  2646. KsaveChanges from time to time, just as you would when editing any document.
  2647. RQTEditMovie has the same window close call feature back as QTMovie. If you set the
  2648. windowCloseMsg
  2649. )eM property to the name of a handler in your card, background, or stack script,
  2650. Hait will be called when the window is closed. For example, you can set up a handler that checks to
  2651. >see if any changes have been made before the window is closed:
  2652. on windowBeingClosed windowName
  2653. )if movieChanged of window windowName then
  2654. Ianswer "Do you want to save the changes to the movie" && windowName &"?"
  2655. with "Don't Save" or "Save"
  2656. 9if it = "Save" then send saveChanges to window windowName
  2657. end if
  2658. end windowBeingClosed
  2659. Fun with Tracks
  2660. cAs stated previously you can set the current track either by clicking on it in the track display or
  2661. movie rect or by setting the 
  2662. currTrackNum
  2663. )R1 property. You can find out the type (eg: "soun",
  2664. H4"vide", "text") of the current track by getting the 
  2665. currTrackType
  2666.  property. The number of tracks
  2667. H,in the movie can be obtained by getting the 
  2668.     numTracks
  2669.  property.
  2670. HbThe stepper buttons that appear on either side of the current track can be used to slide the track
  2671. _forward or backward in time. The amount of time that a track shifts for each click of a stepper
  2672. $button is determined by setting the 
  2673. trackShiftTicks
  2674. )W. property. The value you set this to indicates
  2675. Hbhow many ticks (sixtieths of a second) the track will be shifted in the appropriate direction. The
  2676. ^default value is six ticks (one tenth of a second). If you hold down the mouse button over the
  2677. fstepper button, the track will continue to slide in the specified increment. For very fine control you
  2678. can set the 
  2679. trackShiftTime
  2680. )TB property. For this you pass a time in the scale of the movie. For
  2681. Hbexample if the movieScale property returned 600, you could set the trackShiftTime property to 2 to
  2682. chave each click on the stepper shift the track by 1/300 of a second. You can also slide the current
  2683. track by setting the 
  2684. slideTrack
  2685. );A property to the number of ticks you want the track shifted or by
  2686. setting the 
  2687. slideTrackTime
  2688. )WD property to the amount in movie time by which you want to shift the
  2689. track.
  2690. `Alternate track groups are used to collect tracks together for which only one should appear at a
  2691. `time. Typically tracks are placed into alternate language groups or alternate quality groups. To
  2692.     Helvetica
  2693. QuickTime XCMDs
  2694. 12/21/94
  2695. page 
  2696. Times
  2697. H>place tracks into an alternate track group, you first set the 
  2698. X    groupType
  2699.  property to the type of
  2700. Hetracks you are going to group (eg: "soun", "vide", "text"). Then for every track in the movie of that
  2701. dtype, you need to enable only those that you wish to belong to the alternate group. All other tracks
  2702. aof the same type must be disabled. You can enable or disable tracks by clicking on the enable box
  2703. Eto the left of each track in the track display. You can also set the 
  2704. enableTrack
  2705. disableTrack
  2706. Hcproperties, passing in the number of the track to enable or disable. To group the enabled tracks of
  2707. 'the type previously specified send the 
  2708. groupEnabledTypedTracks
  2709.  message. If you need to
  2710. Hagroup tracks of different types, you must enable only those tracks you want to group together and
  2711. then send the 
  2712. groupAllEnabledTracks
  2713. 7 message. To ungroup an existing group of tracks, first
  2714. HCset any member of the group to be the current track, then send the 
  2715. ungroupTracks
  2716.  message. All
  2717. HJmembers of the group to which the current track belongs will be ungrouped.
  2718. cNormally QuickTime attempts to enforce the alternate track rule of only having one track enabled in
  2719. `a group at a time. In QTEditMovie this automatic enforcement is turned off, thus allowing you to
  2720. benable multiple tracks within a group while you are editing. However, QuickTime will still enforce
  2721. \the rule at certain times. When you set the movieLanguage property, any group of tracks with
  2722. dmultiple languages will be subject to the alternate selection process. Also, if the bit depth of the
  2723. `display the window is playing on changes, the appropriate track within each group is chosen. You
  2724. Pcan force QuickTime to go through the alternate selection process by sending the
  2725. selectMovieAlternates
  2726. )|     message.
  2727. H1To set the language of the current track set the 
  2728. currTrackLanguage
  2729.  property. You can also get
  2730. Hfthis property to find out the track
  2731. s current setting. The value for this property is a region code. A
  2732. \list of region codes appears on page 14-133 and 14-134 of Inside Mac, vol 6. You can set the
  2733.  movie's language by setting the 
  2734. movieLanguage
  2735. )X. property. This property is not saved with the
  2736. HYmovie. Movies always start out with the language of the System Software the Macintosh was
  2737. =booted on. You can set the quality of a track by setting the 
  2738. currTrackQuality
  2739.  property to a
  2740. Hcquality value. Bits 0-5 of the quality value correspond to bit depths 1-32. Bits 6 and 7 correspond
  2741. gto a quality level, 0 for draft, 1 for normal, 2 for better, and 3 for best. For example to set a track
  2742. dto support 16 and 32 bit pixel depths at quality level best the value would be 240 (3*64 + 32 + 16).
  2743. dEvery track is assigned a layer number that determines in what order it is displayed with respect to
  2744. Qthe other tracks. You can alter the layering of the current track by setting the 
  2745. currTracklayer
  2746. HYproperty to a layer number. Layer numbers range from -32,768 to 32,767 with lower numbers
  2747. bbeing closer to the front. You can change the layer number of all members of an alternate group at
  2748. once by setting the 
  2749. currGroupLayer
  2750. )[: property. All tracks that belong to the same group as the
  2751. Hccurrent track will have their layer changed. You can send the current track to the front or back by
  2752. sending the 
  2753. bringTrackToFront
  2754. sendTrackToBack
  2755. )e$ messages. As well, you can send all
  2756. H9members current track's group forward or back by sending 
  2757. bringGroupToFront
  2758. sendGroupToBack
  2759. H'Movie and Track Dimensions and Clipping
  2760. YThere are a number of properties that affect movie and track spatial characteristics. The
  2761.     movieRect
  2762. );S property returns the bounds of the movie. This takes into account which tracks are
  2763. H`enabled as well as any scale factor on the movie. You can find out the bounding rectangle of the
  2764. current track by getting the 
  2765. currTrackRect
  2766. )P5 property. You can also set this property to change a
  2767. track
  2768. s bounding rectangle.
  2769. If you set the 
  2770. movieClipRect
  2771. )S@ property, the movie bounds will be clipped to the rectangle you
  2772. HKpass in. The movie window will be resized to fit the new movie bounds. The 
  2773. trackClipRect
  2774. HLproperty is used to set a clipping rectangle on the current track only. The 
  2775. bitMapMovieClip
  2776. Hbproperty is similar to the bitMapClip property in QTMovie in which the rectangle passed in is used
  2777. cto locate a bit map painted on the card window from which the clipping region is calculated for the
  2778.     Helvetica
  2779. QuickTime XCMDs
  2780. 12/21/94
  2781. page 
  2782. Times
  2783. movie. The 
  2784. bitMapTrackClip
  2785. )_> property is used in the same way to set an arbitrary clipping
  2786. H\region on the current track. If you pass zero instead of a rectangle for any of the clipping
  2787. .properties, the corresponding clip is cleared.
  2788. Miscellaneous Features
  2789. FQTEditMovie allows you to set the poster and preview for a movie. The 
  2790. posterTime
  2791. )?     property
  2792. sets the movie
  2793. s poster. The 
  2794. previewTime
  2795.  and 
  2796. previewDuration
  2797.  properties set the movie
  2798. HFpreview. All of these take a time in the movie
  2799. s time scale as values.
  2800. /You can change the name of the window with the 
  2801. windowName
  2802.  property. If you set the
  2803. dontDimController
  2804. )jI property to true, then the movie controller is not dimmed when the movie
  2805. window is inactive.
  2806. copyFramePict
  2807. )TF message will copy the current movie image to the clipboard as a pict.
  2808. Capturing Live Audio
  2809. ]With QTEditMovie you can grab sound from an audio digitizer. A new sound track is created and
  2810. Tadded to your movie file. To add a new audio track to an existing movie you send the
  2811. grabAudioSoon
  2812.  and 
  2813. grabAudioNow
  2814.  commands:
  2815. Geneva
  2816. kUsend releaseSound to window "Live Video" -- need to do this if QTRecordMovie XCMD was
  2817. $previewing sound (see QTRecordMovie)
  2818. k'send GrabAudioSoon to window "My Movie"
  2819. &send GrabAudioNow to window "My Movie"
  2820. soundStart
  2821. )=O property defaults to zero, in which case the sound grabbing starts immediately
  2822. Haafter you send grabAudioNow.  However if you set a value for it, the grabber will wait until that
  2823. btime to start grabbing. The time is expressed in system ticks (thus use 
  2824. the ticks
  2825.  from HyperTalk
  2826. #to determine a value). You can set 
  2827. soundDuration
  2828. )S) to how long you want the resulting audio
  2829. H5track to be (in ticks) or if you specify the keyword 
  2830. movieLength
  2831. )>$  rather than a time, then the sound
  2832. HMduration will be exactly that of the current movie duration.  If you set the 
  2833. soundEnd
  2834.  property then
  2835. H]sound will be grabbed until that time is reached. You can use this to have the XCMD grab more
  2836. bsound than is specified by soundDuration, giving you a bit of 
  2837.  for adjusting synchronization
  2838. _later. If you don
  2839. t specify soundEnd, then soundDuration will be used to determine when to stop
  2840. [grabbing. SoundDuration will still be used to set the actual length of the new audio track.
  2841. \The grabAudioNow message only gets the ball rolling for grabbing audio, the sound is grabbed
  2842. Uduring the window
  2843. s idle time (which HyperCard automatically gives the window). Thus,
  2844. Wreturning from grabAudioNow does not mean the entire sound has been grabbed. You can be
  2845. 2informed when the grab is complete by setting the 
  2846. grabDoneMsg
  2847.  property to the name of a
  2848. Hehandler to be called when the grab is done. This is similar to the call back properties described for
  2849. QTMovie.
  2850. If you set the 
  2851. playMovieWhileGrabbing
  2852. 6 property to true before grabbing, then the movie will
  2853. H^play as sound is recorded. You can lip synch your favorite video using this method. You should
  2854. \turn the movie
  2855. s sound down before you do this so that the sound of existing tracks does not
  2856. _interfere with your recording. You can have the audio grabbing stop on a mouse click by setting
  2857. stopGrabbingOnClick
  2858.  property before grabbing.
  2859. H;If you are recording from a microphone, you should set the 
  2860. soundPlayThru
  2861.  property to false
  2862.     Helvetica
  2863. QuickTime XCMDs
  2864. 12/21/94
  2865. page 
  2866. Times
  2867. HAbefore recording or you may get feedback through the Mac speaker.
  2868. 0If supported by your digitizer, you can set the 
  2869. stereo
  2870. )". property to true to record in stereo. You can
  2871. also set the 
  2872. )7    soundRate
  2873. );H property to either "11K", "22K", "44K", or 0. If you set it to zero the
  2874. Hjdigitizer
  2875. s default rate is used. If you set it to one of the named rates, the digitizer must support that
  2876. rate.
  2877. Importing Data into a Movie
  2878. =You can add a sound resource to a movie by first setting the 
  2879. e    soundName
  2880.  property and then
  2881. sending the 
  2882. addSoundResource
  2883. )l     command:
  2884. Geneva
  2885. k,set soundName of window "My Movie" to ribbit
  2886. *send AddSoundResource to window "My Movie"
  2887. H[The sound resource needs to be in the current resource path (such as in the current stack).
  2888. >You can also import sound or other data from a file using the 
  2889. importFile
  2890.  property. You set the
  2891. Hdproperty to the name of a file you wish to import. If the type of the file is compatible with one of
  2892. bthe existing movie import components, then the data will be added to the movie. Currently there is
  2893. asupport for importing sound files, AIFF files, PICS files, and text files. By default the data is
  2894. Yadded in parallel. If you want the data to be inserted into the file, you need to set the
  2895. importInParallel
  2896.  property to false.
  2897. Flattening a Movie
  2898. aAs stated earlier, when you copy and paste from one movie to another, a reference to the original
  2899. idata is pasted into the file rather than the actual data. You can create a file that is self contained by
  2900. flattening
  2901. ),! the movie file. If you send the 
  2902. flattenMovie
  2903. )G( message, a new movie file is created in
  2904. Hdwhich all of the data referred to by the window movie is copied into the new file. Data from deleted
  2905. ctracks is not copied, so you can reduce the size of a file if you have removed tracks from a movie.
  2906. PYou can specify a destination file for the flattened movie by first setting the 
  2907.     destMovie
  2908. ):     property
  2909. Hbto the path name of the file. If you do not specify a destName the name will the movie name with 
  2910. flattened
  2911.  appended.
  2912. bBy default, the movie's tracks
  2913.  data are interleaved while the movie is being flattened. If you do
  2914.  not want this behavior, set the 
  2915. dontInterleave
  2916. )Q" property to true. You can set the
  2917. activeTracksOnly
  2918. )bG property to true to copy only currently enabled tracks. If you set the
  2919. addToDataFork
  2920. )WR property to true, then flattenMovie will add the movie resource to the data fork,
  2921. H7making the file compatible for non-Macintosh platforms.
  2922. Adding Text Tracks to a Movie
  2923. _QTEditMovie has several properties and messages to add new text tracks, add text samples to the
  2924. Rtrack, and specify highlighting for text. To add a next text track, first set the 
  2925. textTrackRect
  2926. HJproperty to a rectangle within the movie for the new track. Then send the 
  2927. addTextTrack
  2928. H_message. A new track will be added. Since there are no text samples in the track yet, the track
  2929. bdisplay for the new track appears blank. The new track is set to be the current track. Another way
  2930. !to add a new track is to set the 
  2931. drawTextTrackMode
  2932. )t, property to true. When this is set, a cross
  2933. H]hair cursor appears as you move the mouse over the window. You can draw the bounds of the new
  2934. Rtext track directly into the window. After you draw the mode is set back to false.
  2935.     Helvetica
  2936. QuickTime XCMDs
  2937. 12/21/94
  2938. page 
  2939. Times
  2940. H^There are a few ways to add text samples. Each of the add text messages uses the current movie
  2941. gselection as the start time and duration for the new sample. The text is added to the current track (or
  2942. Othe first text track if the current track is not a text track). If you set the 
  2943.  property to a string of
  2944. text and then send the 
  2945. addText
  2946. )-B message, that text will be added to the movie. Another way to add
  2947. text is to send the 
  2948. addSelectedText
  2949. )\? message. In this case the text is obtained form whatever field
  2950. Hbtext is currently selected within Hypercard. The default style for addText and addSelectedText  is
  2951. f12 point  application font plain text. Before sending addText you can set up the style for the text by
  2952. setting the 
  2953. fontName
  2954. fontSize
  2955. , and 
  2956. fontFace
  2957. )10 properties. The fontFace property is the sum of
  2958. Hea set of individual style values: bold is 1, italic is 2, underline is 4, outline is 8, shadow is 16,
  2959. 7condense is 32, and extend is 64. You can also set the 
  2960. justification
  2961.  property to 0 for left, 1 for
  2962. H,center, and -1 for right justification. The 
  2963. textForeColor
  2964.  and 
  2965. textBackColor
  2966.  properties can be
  2967. H\set to choose the color of the text and the background. Their values are RGB triplets. These
  2968. bproperties affect the entire text sample you are adding. To add multi-styled text you need to send
  2969. addFieldText
  2970. )J/ message. You first set this up by setting the 
  2971. textFieldName
  2972.  property,
  2973. H_identifying the HyperCard field from which the text will be extracted. The XCMD will first look
  2974. dfor a card field by that name, then a background field. HyperCard fields can have multi-styled text.
  2975. iThe text font, size, and style of the text within the field will be used in the text sample that is added
  2976. to the movie.
  2977. aYou can specify that particular text within the sample being added be highlighted. If you set the
  2978. textHiliteBegin
  2979.  and 
  2980. textHiliteEnd
  2981. )K? properties to the desired begin and end offsets into the text,
  2982. HWthen, when you send one of the add text messages, the indicated text will be tagged for
  2983. ^highlighting. You can subsequently highlight additional text in the previously added sample by
  2984. Msetting new values for textHiliteBegin and textHiliteEnd and the sending the 
  2985.     addHilite
  2986. )4     message.
  2987. HeYou first need to set up a new selection in the movie controller to indicate the time and duration of
  2988. dthe new highlighting. The effect of calling addHilite with new offsets set is to extend the existing
  2989. `text sample with the new text highlighted. For example, assuming you are highlighting text at is
  2990. bbeing spoken (in a sound track), your first add text message would add the entire text you want to
  2991. bdisplay but the duration of the sample would be that of the first highlighted text. Then you would
  2992. asend the appropriate number of addHilite messages, each time extending the sample by the duration
  2993. cof the new text being highlighted. By default the system highlight color will be used when the text
  2994. Iis displayed. You can specify a different highlight color by setting the 
  2995. hiliteColor
  2996.  property before
  2997. HZsending an add text or addHilite message. To go back to the default color, you need to set
  2998. useHiliteColor
  2999. )SC to false. It is set to true when you set the hiliteColor property.
  3000. H`The text media handler defines a set of flags that can be set for a text sample. You can set the
  3001.     textFlags
  3002. )4K property before calling one of the add text messages. The flag values are:
  3003. DontDisplay = 1
  3004. Don't display the text
  3005. DontAutoScale = 2
  3006. )p1Don't scale text as track bounds grows or shrinks
  3007. ClipToTextBox = 4
  3008. Clip update to the textbox
  3009. ShrinkTextBoxToFit = 16
  3010. )p%Compute minimum box to fit the sample
  3011. ScrollIn = 32
  3012. )p,Scroll text in until last of text is in view
  3013. ScrollOut = 64
  3014. )pLScroll text out until last of text is gone (if both set, scroll in then out)
  3015. HorizScroll = 128
  3016. )p2Scroll text horizontally (otherwise it's vertical)
  3017. ReverseScroll = 256
  3018. )pSvert: scroll down rather than up; horiz: scroll backwards (justification dependent)
  3019. ContinuousScroll = 512
  3020. )p0new samples cause previous samples to scroll out
  3021. FlowHoriz = 1024
  3022. )p>horiz scroll text flows in textbox rather than extend to right
  3023. DropShadow = 4096
  3024. display text with a drop shadow
  3025. AntiAlias = 8192
  3026. )p$attempt to display text anti aliased
  3027. KeyedText = 16384
  3028. key the text over background
  3029. HeAdd together the value you want set and set textFlags to the result. The scrolling properties have an
  3030. /optional scroll delay feature. You can set the 
  3031. scrollDelay
  3032. )@( property to a time value indicating the
  3033. Hddelay. This will have no effect unless you set the scrollIn or scrollOut (or both) flag. These flags
  3034.     Helvetica
  3035. QuickTime XCMDs
  3036. 12/21/94
  3037. page 
  3038. Times
  3039. HVare described in more detail in the text media section of Inside Macintosh: QuickTime.
  3040. hBy default the text that is added is flowed in a text box that is inset by 2 from the bounds of the text
  3041. 4track. You can set your own text box by setting the 
  3042. textBox
  3043. ),$ property. The rectangle you pass is
  3044. Hfrelative to the top left of the track itself. For example, if you wanted the text box to fit the track
  3045. [bounds exactly, you would set the text box to the same size rectangle you used when you set
  3046. atextTrackRect before calling addTextTrack, but offset to 0,0. To go back to the default text box,
  3047. you need to set 
  3048. useTextBox
  3049. )C? to false. It is set to true when you set the textBox property.
  3050. \QTEditMovie supports undo for most of the editing operations described thus far. To undo the
  3051. $previous operation, simple send the 
  3052. 7 message. If you send undo again, the operation will be
  3053. redone.
  3054.     Helvetica
  3055. QuickTime XCMDs
  3056. 12/21/94
  3057. page 
  3058. The QTRecordMovie XCMD
  3059. Times
  3060. XThe QTRecordMovie XCMD is used to connect to video digitizers to display live video in a
  3061. Vwindow. You can then capture the video to make QuickTime movies. There are two ways to
  3062. ]capture movies: controlled grab and live grab. Both methods are described below. You can also
  3063. Bgrab and compress a still picture and save it into a picture file.
  3064. KTo open a live video window, you send the QTRecordMovie command as follows:
  3065. Geneva
  3066. KQTRecordMovie windowName, windowType, windowRect, growable, connectToAudio,
  3067. $videoStandard, videoInput [,options]
  3068. H_The XCMD will search for a video digitizer board and, if it finds one, will display video in an
  3069. KXWindow specified by windowName, windowType, and windowRect. The windowType
  3070. [parameter follows the same conventions as for the QTMovie XCMD. WindowRect is given in card
  3071. elocal coordinates. A typical window title may be 
  3072. Live Video
  3073. ; the title for the movie to be recorded
  3074. _is specified by sending a message to the window. If you specify true for growable, then you can
  3075. dresize the window by clicking in the lower right corner and dragging. By default the aspect ratio of
  3076. _the window will be maintained. If you want to arbitrarily resize the window hold down the shift
  3077. Ykey while you drag the the lower right corner. If you specify true for the connectToAudio
  3078. ]parameter, then the XCMD will attempt to connect to an audio digitizer. The default is to not
  3079. bconnect to an audio digitizer. If you do specify true, the sound will play through the Mac speaker
  3080. _while previewing video and while doing a live video and audio grab. You can suppress audio play
  3081. 8through during preview or live recording by setting the 
  3082. soundPlayThruPreview
  3083. soundPlayThruRecord
  3084. )~B properties to false. You may wish to do this for live grab from a
  3085. H_microphone to avoid audio feedback. The videoStandard is an optional parameter that is provided
  3086. dso you can force the digitizer to use one of the specified standards: 
  3087. , or 
  3088. secam
  3089. . The
  3090. \standard chosen must, of course, be supported by the digitizer. With the optional videoInput
  3091. eparameter you can specify which input of the video digitizer to use. You can get a list of the inputs
  3092. by executing:
  3093. QTRecordMovie videoInputList
  3094. get the result
  3095. HiThe result will contain a list of inputs for the video digitizer. Each element in the list will be of the
  3096. Oform "inputFormat inputNumber", for example COMPOSITE 1, SVIDEO 2, COMPONENT 1.
  3097. ]You can pass one of these strings as the videoInput parameter when you open the video window.
  3098. \If you do not specify videoStandard or videoInput, the digitizer
  3099. s default is used. Once the
  3100. Fwindow has been opened, you can change the video input by setting the 
  3101. videoInput
  3102.  property. If
  3103. HZyou want to get the video input list after the video window is opened, you need to get the
  3104. videoInputList
  3105. )S4 property, which will return the same list as above.
  3106. HcLikewise, you can get a list of available digitizer cards by either executing QTMovie VideoCardList
  3107. or by getting the 
  3108. videoCardList
  3109. )P< property after the video window is opened. You can then set
  3110. H!which card to use by setting the 
  3111.     videoCard
  3112.  property.
  3113. The only optional parameter is 
  3114.     invisible
  3115. )18. If this is specified then the window will initially be
  3116. H]hidden. This can be useful in conjunction with the cropWindow message discussed later. If you
  3117. cwish to have the window initially invisible, but do not want to specify either the videoStandard or
  3118. $videoInput parameters, you can pass 
  3119. empty
  3120. 5 for those parameters and the default standard and/or
  3121. HXinput will be used. You can show the window either by send show window or by setting the
  3122. visible
  3123. )&# property to true. You can set the 
  3124. windowCloseMsg
  3125. )e! to the name of a handler in your
  3126. H-stack to be called when the window is closed.
  3127.     Helvetica
  3128. QuickTime XCMDs
  3129. 12/21/94
  3130. page 
  3131. Video Properties
  3132. Times
  3133. \[The following paragraphs describe how you can change many of the video and audio properties
  3134. ]from a script. Some new additions to the XCMD makes many of these properties unnecessary. The
  3135. ShowSoundDialog
  3136.  and 
  3137. ShowVideoDialog
  3138. )f- commands bring up standard QuickTime dialogs
  3139. Hdfor selecting the various video and audio options that a particular digitizer provides. You can save
  3140. "the settings you choose using the 
  3141. SaveSoundPrefs
  3142.  and 
  3143. SaveVideoPrefs
  3144.  properties the
  3145. H^property value you specify is the name under which it will saved (as Psnd and Pvid resources).
  3146. 0You can later restore the settings by using the 
  3147. RestoreSoundPrefs
  3148.  and 
  3149. RestoreVideoPrefs
  3150. HKproperties, specifying the same name you used when you saved the settings.]
  3151. *$QThere are a set of seven properties that affect the live video display. They are 
  3152. saturation
  3153. brightness
  3154.     sharpness
  3155. contrast
  3156. black Level
  3157. , and 
  3158. white Level
  3159. . The range for these
  3160. Hhproperties is 0 to 65535. If you try get the current value of the property and -1 is returned, then that
  3161. +property is not supported by the digitizer.
  3162. \Often the default video rectangle used by the digitizer contains some garbage at one or more
  3163. dborders of the image. You can adjust the video rectangle to account for this. First, you can get the
  3164. maxRect
  3165. )0X property to find out the maximum rectangle that you can set the video rectangle to. You
  3166. can also get the 
  3167. )K    videoRect
  3168. )8? property to find out its current setting. You can then set the
  3169. H    videoRect
  3170. )8< to some rectangle within the maximum rect. If you send the 
  3171. resetVideoRect
  3172. Hcmessage, the video rectangle will be reset to its default. MaxRect and videoRect are independent of
  3173. \the current window size. Typically MaxRect may be something like "0,0,640,480" and videoRect
  3174. ais some rectangle contained within. The actual size of the image is determined by the size of the
  3175. \video window. Thus, when you adjust videoRect you are indicating what portion of the maxRect
  3176. 7to display. You are not changing the size of the image.
  3177. ^The following script will shift the whole image up or down one pixel (note that the "pixel" in
  3178. _question is in the coordinate space of the maximum rectangle, thus if you are viewing a quarter
  3179. `screen image, you may need to shift the videoRect by two pixels to see a one pixel adjustment in
  3180. the image you are viewing):
  3181. Geneva
  3182. on ShiftImage direction
  3183. )if direction = "up" then put -1 into bump
  3184. /else if direction = "down" then put 1 into bump
  3185. else exit ShiftImage
  3186. /put videoRect of window "Live Video" into vRect
  3187. add bump to item 2 of vRect
  3188. add bump to item 4 of vRect
  3189. -set videoRect of window "Live Video" to vRect
  3190. end ShiftImage
  3191. H_If you set the growable option to true when you opened the video window, you can click and drag
  3192. ]in the lower right portion of the window to resize it. You can also change the window size by
  3193. setting the 
  3194. windowSize
  3195. )ED property. You pass a point indicating the new width and height.The 
  3196.     Helvetica
  3197. QuickTime XCMDs
  3198. 12/21/94
  3199. page 
  3200. Times
  3201. Haproperty is used to change the location of the window. This is a point in global coordinates. You
  3202. ecan also drag the window by its title bar, or if there is no title bar, you can hold down the control
  3203. >key while clicking in the window to drag it to a new location.
  3204. (You can freeze the video by sending the 
  3205. videoOff
  3206. )2+ message and turn it back on by sending the
  3207. videoOn
  3208. )/V message. You can also freeze and unfreeze the video by option/clicking in the window.
  3209. H9You can find out the current freeze state by getting the 
  3210. videoOn
  3211.  property. True means it is on.
  3212. HVNormally, when HyperCard is made inactive (another app is selected), the live video is
  3213. %automatically frozen. If you set the 
  3214. keepVideoOn
  3215. )K- property to true then the video will stay on
  3216. when HyperCard is inactive.
  3217. ^If you hold down the command key and drag in the video window, you can select a portion of the
  3218. [video window to be grabbed. As you drag, a rectangle will appear in the window. The current
  3219. bcoordinates of the rectangle are displayed in the upper left of the window. When you let go of the
  3220. [button, the window will show video only in the rectangle you selected, surrounded by a gray
  3221. `region. You can then move the cropping rectangle about by clicking in the center and dragging it
  3222. babout. You can resize the selection by clicking in any of the corners and dragging that corner. If
  3223. `you resize the video window (by dragging the lower right corner), the cropping rectangle will be
  3224. ]proportionally resized. If you command/click without dragging, the cropping rectangle will be
  3225. @cleared. You can also set the cropping rectangle by setting the 
  3226. cropRect
  3227.  property of the window.
  3228. Vjpeg
  3229. Photo - JPEG
  3230. AppleMark
  3231. !,!#'(***
  3232. .1-)1%)*(
  3233. ((((((((((((((((((((((((((((((((((((((((((((((((((
  3234. %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz
  3235. &'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz
  3236. %o.8f
  3237. _1{Xw+
  3238. +vuW)
  3239. Lc?.6E
  3240. Lc?.6E
  3241. Lc?.6E
  3242. Lc?.6E
  3243. Lc?.6E
  3244. Lc?.6E
  3245. ]"yK*
  3246. O~Nx?
  3247. /gd%g
  3248. a(*0H
  3249. -uUu    
  3250. *Kum>&(wE&
  3251. WV&Iw<
  3252. 19Rpr
  3253. }~QK<
  3254. }=Esv
  3255. k*qKw
  3256. qoTre
  3257. R[lR+
  3258. @<t=    
  3259. p9''<
  3260. ;n<qJ.
  3261. <}kJ7
  3262. KvIEfG
  3263. gKEs    
  3264. [)}y!
  3265. 1OSM&
  3266. o&$*3
  3267. JHG<`
  3268. =*FV$
  3269. $~5O 
  3270. Z60\N
  3271. ]72Hm
  3272. P+R    Qe
  3273. o<l`{
  3274. N*9WR
  3275. m^K]>
  3276. Hp:p0s
  3277. v*u<t
  3278. {dtt*
  3279. {{gp>
  3280. qW,!k
  3281. jc%$FN
  3282. [f;=>
  3283. {e!e\
  3284. {R#u'9=Oz|
  3285. d&A;GB:W+j
  3286. n@=rz
  3287. Nx;I<
  3288. []Mhm
  3289.  m6Q|
  3290. Y5yGx
  3291. q`r['
  3292. (F*?y
  3293. \dg<t#
  3294. };W|i
  3295. YA2kZ
  3296. }__!x
  3297. QuickTime
  3298.  and a
  3299. Photo - JPEG decompressor
  3300.  are needed to see this picture
  3301. HPIf you want the video window to just fit the cropping rectangle you can set the 
  3302. cropWindow
  3303. HUproperty to true. The window will be resized and relocated to fit the crop rectangle.
  3304. Vjpeg
  3305. Photo - JPEG
  3306. AppleMark
  3307. !,!#'(***
  3308. .1-)1%)*(
  3309. ((((((((((((((((((((((((((((((((((((((((((((((((((
  3310. %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz
  3311. &'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz
  3312. jY~&E
  3313. #j:Xf
  3314. `[ ~u
  3315. M( R#!
  3316. RjI4qT
  3317. dSy~W
  3318. gs^{^
  3319. |Ias<
  3320. jv.">c
  3321. gNmM\
  3322. M]&p}
  3323. X fy?^9
  3324. kc$p<sD
  3325. 2J`[v
  3326. Zkv{Q
  3327. Gy$p]
  3328. }-}y{
  3329. PrJV=\
  3330. Gqim;I(
  3331. ^WBU%
  3332. u#FB<j
  3333. 8)u2.
  3334. i&PD6
  3335. =20O=
  3336. =Ed|9
  3337. qqmj$
  3338. UF*1Q]
  3339. kVrM$
  3340.     Helvetica
  3341. QuickTime XCMDs
  3342. 12/21/94
  3343. page 
  3344. Times
  3345. HZThe following script will open a hidden video window, set the crop rectangle, and then set
  3346. _cropWindow before showing the window. It uses the rects of two transparent buttons on the card,
  3347. bwRect which is the full size of the video and cropBtn, which is a smaller button within the bounds
  3348.     of wRect.
  3349. Geneva
  3350. on OpenCroppedWindow direction
  3351. XQTRecordMovie "Live Video", plain, rect of btn wRect, true, true, empty, empty,invisible
  3352. 0if the result is not empty then <error handling>
  3353. :set cropRect of window "Live Video" to rect of btn cropBtn
  3354. -set cropWindow of window "Live Video" to true
  3355. show window "Live Video"
  3356. end OpenCroppedWindow
  3357. HPWhile the cropWindow property is true, you cannot change the cropping rectangle.
  3358. `Due to limitations in some digitizers and for compression optimization, the location and size of
  3359. \both the video window and the cropping rectangle have certain constraints. The location of a
  3360. bdisplayed video rectangle must start on an even scan line of the digitizer
  3361. s monitor. Note that in
  3362. bglobal coordinates this may be odd or even depending on how the digitizer
  3363. s monitor is offset from
  3364. cthe main screen. When resizing the video window the size is gridded to be a multiple of four in the
  3365. ahorizontal and vertical dimensions, unless you hold down the shift key. Keeping the dimensions to
  3366. ^multiple of four allows compression and decompression to work much faster in many cases. These
  3367. _constraints are enforced by the XCMD, so you do not need to be concerned about it other than to
  3368. Tunderstand why the window location or size may not show up exactly as you specified.
  3369. Capture Properties
  3370. cBefore starting a video capture, you need to set a variety of properties affecting the capture. The
  3371. fileName
  3372. )3\ property specifies the new movie file to create. By default, if a file by that name already
  3373. H-exists, it is first deleted. You can set the 
  3374. deleteFile
  3375. )71 property to false to indicate that it should not
  3376. Hedelete the file, in which case an attempted capture will fail. The creator for the new file is set to
  3377. ]"TVOD" which is the creator type for the MoviePlayer application. You can specify a different
  3378. creator by setting the 
  3379. movieCreator
  3380. )L3 property to whatever four character type you want.
  3381. HcTo set the compressor to use for the capture, you can first find out what compressors are available
  3382. by getting the 
  3383. )C    codecList
  3384. )6H property. This returns a list of available compressors by name. You can
  3385. H1get a list of compressors by type by getting the 
  3386. codecTypes
  3387. )B! property. For example, the Video
  3388. Hbcodec
  3389. s name is "Video" and type is "rpza". You can then set the compressor to use by its position
  3390. in either list by setting the 
  3391. codecNumber
  3392. )M6 property. If the Video compressor was 7th in the list
  3393. H\you would set codecNumber to 7 to choose that compressor. You can also set the compressor by
  3394. setting the 
  3395. )3    codecType
  3396. )<L property (eg: "rpza", "jpeg", etc). If there is more than one compressor of
  3397. Hathat type, QuickTime will choose one for you. Another way of getting the codecList is to execute:
  3398. QTRecordMovie codecList
  3399. get the result
  3400. HbThis has the advantage that you do not need to have the video window open to get the list. You can
  3401. [get a list of bit depths that are supported by a particular compressor in a similar manner:
  3402. #QTRecordMovie depthList,codecNumber
  3403. get the result
  3404.     Helvetica
  3405. QuickTime XCMDs
  3406. 12/21/94
  3407. page 
  3408. Times
  3409. HbAs before, the codecNumber is the codec's position in the codecList. The possible depth values are
  3410. ^1,2,4,8,16,24,32,33,34,36, and 40. Note that 33,34,36,and 40 are actually 1,2,4,and 8 bit gray
  3411. @level. You can set the depth at which to capture by setting the 
  3412. movieDepth
  3413.  property.
  3414. pictureQuality
  3415. )P: setting controls the spatial quality of the capture. The 
  3416. motionQuality
  3417. Hasetting affects the temporal quality. Both of these have a range of 0-1023. If you want to design
  3418. eyour own quality input interface, the QuickTime values for certain fixed quality levels are available
  3419. as read only properties: 
  3420. minQuality
  3421. maxQuality
  3422. lowQuality
  3423. normalQuality
  3424. , and
  3425. highQuality
  3426. )B6. MotionQuality only takes effect if you have set the 
  3427. frameDifferenced
  3428.  property to
  3429. HHtrue. If you specify that a movie be frame differenced, you can set the 
  3430. keyFrameRate
  3431.  property.
  3432. H\This will indicate the minimum gap between key frames. Additional key frames may be added by
  3433. (the compressor if it deems it necessary.
  3434.     frameRate
  3435. )9L property controls what the movie
  3436. s frame rate will be for controlled grabs.
  3437. HaTypical values are in the 10-15 frames per second range. The rate for live grabs are whatever the
  3438. *live grab was able to achieve. If you set 
  3439. throttleLiveGrab
  3440. )^$ to true, then the XCMD will attempt
  3441. H/to constrain the live grab rate to that of the 
  3442.     frameRate
  3443.  property.
  3444. H^The dimensions of the movie are determined by the size of the window (or crop rectangle if the
  3445. ]window is cropped). Some digitizers may not display reduced sized images as well as one might
  3446. want. The 
  3447. grabSize
  3448. )1E property allows you to set a size at which the image will be grabbed
  3449. Hb(generally something like quarter screen) and have it be copied into the smaller size you want the
  3450. `movie to be. The video window will automatically resize during the grab process to the specified
  3451. isize. If you use this feature, you can turn it off by setting the grabSize to 0,0. The default is that it
  3452. Ris turned off. The grab process is slowed down considerably when grabSize is used.
  3453. Audio
  3454. WIf you specified true for the connectToAudio option when opening the video window, then
  3455. ZQTRecordMovie will attempt to connect to whatever sound digitizer is selected in the Sound
  3456. `control panel. The sound will play through the Macintosh speaker while viewing live video unless
  3457. you set the 
  3458. soundPlayThruPreview
  3459. : property to false. You can have the sound turned off only
  3460. during recording by setting 
  3461. soundPlayThruRecord
  3462. )~  to false. You can also set the 
  3463. audioLevel
  3464. HDproperty (0-256) to raise or lower the volume of the incoming sound.
  3465. 1To disconnect from the audio digitizer, send the 
  3466. releaseSound
  3467.  message. This is necessary if
  3468. HXsome other XCMD (for example QTEditMovie) needs the audio digitizer while the live video
  3469. 1window is open. You can reconnect by sending the 
  3470. startSound
  3471. )=  message. You can also send this
  3472. Hfto connect to an audio digitizer if you initially had set false for the connectToAudio initial option.
  3473. AFor a live grab, if supported by your digitizer, you can set the 
  3474. stereo
  3475.  property to true to record in
  3476. stereo. You can also set the 
  3477.     soundRate
  3478. );9 property to either "11K", "22K", "44K", or 0. If you set
  3479. Hgit to zero the digitizer
  3480. s default rate is used. If you set it to one of the named rates, the digitizer
  3481. must support that rate.
  3482. *&    Live Grab
  3483. 6To grab frames as fast as possible you first send the 
  3484. liveGrabPrep
  3485.  message. The XCMD
  3486. H'prepares for a live grab. A subsequent 
  3487. doLiveGrab
  3488. )C, message starts capturing frames immediately
  3489. Heinto the movie file. If you are connected to an audio digitizer, either by setting the connectToAudio
  3490. cinitial option to true or by sending the startSound message, then sound will be captured along with
  3491.     Helvetica
  3492. QuickTime XCMDs
  3493. 12/21/94
  3494. page 
  3495. Times
  3496. H`the video. If you don
  3497. t want to capture sound, send the releaseSound message before starting the
  3498. "live grab. You can set either the 
  3499. maxGrabTime
  3500. maxGrabTicks
  3501.  property to limit the duration
  3502. H\of the live grab. MaxGrabTime is expressed in seconds, maxGrabTicks in ticks (sixtieths of a
  3503. csecond). By default the grabbed frames are written out to the disk. To make the grab go faster, you
  3504. can set 
  3505. )#    grabToRAM
  3506. )EM to true. Frames will now be grabbed to RAM at a faster rate, but the capture
  3507. H^will halt when RAM is filled. The file will still be properly written after the capture halts.
  3508. XBy default the live grab can be halted by clicking the mouse during the grab. If you set
  3509. stopGrabbingOnClick
  3510. ){0 to false, then clicking will not halt the grab.
  3511. Controlled Grab
  3512. cA controlled grab differs from a live grab in that you decide when a frame is grabbed. Audio is not
  3513. Fgrabbed for controlled grabs. To start a controlled grab you send the 
  3514. startControlledGrab
  3515. message. You can then send 
  3516. grabOneFrame
  3517. )R/ at any time. Each time you send grabOneFrame a
  3518. H9new frame is added to the movie. When you are done, send 
  3519. finishControlledGrab
  3520. . For
  3521. H[example, if you had XCMD's that controlled a laser disk, you could record frames from it by
  3522. executing the following script:
  3523. Geneva
  3524. &on GrabSomeFrames startFrame, endFrame
  3525. vidSearch startFrame
  3526. /send StartControlledGrab to window "Live Video"
  3527. put startFrame into currFrame
  3528. "repeat while currFrame <= endFrame
  3529. (send GrabOneFrame to window "Live Video"
  3530. vidStep
  3531. put vidFrame() into currFrame
  3532. end repeat
  3533. 0send FinishControlledGrab to window "Live Video"
  3534. end GrabSomeFrames
  3535. _This would grab every frame of the source movie. You may want to grab every other frame to save
  3536. `space and be at a more reasonable movie rate. At whatever rate you decide to grab, you must tell
  3537. [the XCMD by setting the frameRate property. It is expressed as frames per second, hence you
  3538. `would set it to 15 if you were grabbing at that rate. Some video disks (usually CAV disks from a
  3539. afilm source) present still frames at 24 frames per second, hence grabbing every other frame would
  3540. Oamount to 12 frames per second and you would need to set the value accordingly.
  3541. If you set 
  3542. beepOnGrab
  3543. )FE to true, then you will hear a beep whenever grabOneFrame is finished
  3544. Hb(which could possibly take a long time depending on the size of the frame you are grabbing and the
  3545. 8speed of the compressor you chose).You can also set the 
  3546. grabCompleteMsg
  3547.  to the name of a
  3548. HAhandler in your stack to be called when grabOneFrame is complete.
  3549. dDepending on the digitizer, if you are capturing video in a script loop as in the example above, the
  3550. Xvideo window may only be updated when you send grabOneFrame. To be able to see the video
  3551. &while in a loop, you may need to send 
  3552. " to the window inside of the loop.
  3553. H,Special Features for Stop Frame Movie Making
  3554. ]You can set up your stack to have a button that sends the grabOneFrame command when you press
  3555. =it. With this, you can make your own animations. If you send 
  3556. showController
  3557.  to the window
  3558.     Helvetica
  3559. QuickTime XCMDs
  3560. 12/21/94
  3561. page 
  3562. Times
  3563. H_while making a controlled grab movie, the movie grabbed thus far will play in the window with a
  3564. ]standard movie controller. You can navigate about in the movie using the controller. When the
  3565. amovie hits the end, the window automatically goes back to live video, allowing you to preview the
  3566. fnext frame before you actually grab it. You can continue to use the controller and the live video will
  3567. Xgo off automatically. You can continue to add frames to the movie and use the controller
  3568. _alternately. When you are using the controller, you can pause at any frame you have captured so
  3569. far and send the 
  3570. cutCurrFrame
  3571. )N7 command to cut any frames you didn
  3572. t like. If you send
  3573. HDfinishControlledGrab, you can still add to the movie by setting the 
  3574. doAppend
  3575.  property to true
  3576. Hdbefore again calling startControlledGrab. If doAppend is false, startControlledGrab will replace the
  3577. file.
  3578. If the 
  3579. showPrevFrameWindows
  3580. ? property is set to true, then two windows, each a quarter size
  3581. H[of the main window, will appear to the right of the main window. As frames are added to the
  3582. \movie, these windows will display the last two frames grabbed, so that one can use them as a
  3583. Yguide while setting up the next frame. These windows can be dragged about by clicking and
  3584. dragging inside the window.
  3585. Grabbing Still Pictures
  3586. >You can grab a still picture to a picture file by sending the 
  3587. grabPict
  3588.  message. The picture will be
  3589. Hathe size of the window (or crop rectangle if it is set). The picture will be compressed using the
  3590. fsame compression properties you set for capturing movies. It will written out to the file specified in
  3591. ,the fileName property. If you first set the 
  3592. pictCreator
  3593. )?* property then the picture file created by
  3594. HcgrabPict will have its creator set to that value. The default value is "ppxi", the signature of the
  3595. Picture Compressor application.
  3596.     Helvetica
  3597. QuickTime XCMDs
  3598. 12/21/94
  3599. page 
  3600. The QTPict XCMD
  3601. Times
  3602. cThe QTPict XCMD performs a variety of Picture related utilities including displaying a picture on a
  3603. ]card, compressing pictures, and allowing control over the clipping region of the card window.
  3604. Displaying Still Pictures
  3605. Geneva
  3606. 6QTPict DisplayPict, name, location, source, [,options]
  3607. H]DisplayPict is used to display a still picture (compressed or uncompressed) directly onto the
  3608. ]HyperCard screen. To display pictures into an XWindow, use the built-in Picture XCMD provided
  3609. bwith HyperCard 2.0. Name is the name of the Pict file or resource you wish to display. Location is
  3610. ggiven in the coordinates of the card window. It can be either a point or a rect. If a rect is supplied,
  3611. bthe picture will be scaled to fit. If your picture has a mask associated with it, the picture will
  3612. ]display using the mask. (Creating a picture with a mask is discussed below.) Source is either
  3613.  file
  3614.      resource
  3615. )+$. The three optional parameters are 
  3616. thumbnail, clipTo, 
  3617. forceOffscreen.
  3618. )YLThumbnail applies to picture and movie files. If thumbnail is chosen, then a
  3619. Hfthumbnail (aka preview) of the picture or movie file is displayed. If the file does not already have a
  3620. fthumbnail resource, then one will be created for it and installed in the file. If the clipTo option is
  3621. chosen, then the next parameter
  3622.  must
  3623. = be a rectangle. The rectangle specifies an area to which the
  3624. Hcdisplayed picture will be clipped. If you specify forceOffscreen, then the picture will drawn to an
  3625. Hoffscreen buffer first. This might be desirable for slow drawing images.
  3626. eDisplayPict, like Direct movies, is a volatile operation. It simply blasts the pict directly onto the
  3627. Xcard window with HyperCard being none the wiser. As a result any operation that requires
  3628. eHyperCard to refresh all or part of the card will cause the picture to be erased. Use of the clipping
  3629. Xcommands below can mitigate this somewhat by preventing HyperCard from drawing over your
  3630. Spict, but it will not save you from dialog boxes or other windows erasing the pict.
  3631. dIf you get the result after DisplayPict, it will contain the rectangle of the drawn picture. You can
  3632. call 
  3633. QTPict PictBounds
  3634. )lB with the same parameters as DisplayPict to get the bounds without
  3635. displaying the pict.
  3636. Getting Available Compressors
  3637. QTPict CodecNames
  3638. !put the result into codecNameList
  3639. QTPict CodecTypes
  3640. !put the result into codecTypeList
  3641. H`CodecNames returns a return delimited list of codec names, that can be used for building a menu.
  3642. `CodecTypes returns a comma delimited list of the corresponding four character codec types in the
  3643. asame order as the codec name list. You can then use the following button script to choose a codec
  3644. for the CompressPict command.
  3645. on mouseDown
  3646. 0global codecNameList, codecTypeList, chosenCodec
  3647.     Helvetica
  3648. QuickTime XCMDs
  3649. 12/21/94
  3650. page 
  3651. Geneva
  3652. Fput PopUpMenu(codecNameList, 0, bottom of me, left of me) into itemNum
  3653. if itemNum > 0 then
  3654. 2put item itemNum of codecTypeList into chosenCodec
  3655. end if
  3656. end mouseDown
  3657. Compressing Still Pictures
  3658. 1QTPict CompressPict, name, source, quality, codec
  3659. Times
  3660. H`CompressPict is used to compress a picture resource or file. Name is the name of the resource or
  3661. ,file you wish to compress. Source is either 
  3662. resource
  3663. )((. Quality is a value between 1 and 1023.
  3664. H\The default is 512. Codec is a four character compression type, which can be obtained by the
  3665. _method shown above. The default is 
  3666. , the Video compressor. The resulting resource or file
  3667. will be called 
  3668. name.qn
  3669. ))C where name is the name you passed in and n is the quality level. [
  3670. For now, if
  3671. Hqa resource is found with the same name, it is replaced; if a file is found with the same name it is not replaced.
  3672. H'Capturing Screen Bits to a Picture File
  3673. 2QTPict ScreenBitsToPictFile, global rect, fileName
  3674. HdScreenBitsToPictFile will copy whatever bits are on the screen within the global rectangle specified
  3675. <and copy them into a new picture file specified by fileName.
  3676. *))Converting a Pict resource to a Pict file
  3677. QTPict PictRsrcToFile, name
  3678. H`Since I couldn
  3679. t find an application that would allow me to save a picture file with a mask that
  3680. aDrawPicture understands, I put the PictRsrcToFile command in as a utility routine. If someone can
  3681. eshow me an easier way to do this, I may take it out. Thus the ugly process of creating a picture file
  3682. `with a mask (i.e. a 
  3683. cutout
  3684. ) is the following:  Create the picture you want to cut out.  With a
  3685. _painting program, such as PixelPaint or Studio 32, lasso the part you want as your cutout, then
  3686. *copy it and paste it into the Scrapbook. [
  3687. ANot every application will preserve the mask when you do this; eg
  3688. Adobe Photoshop.
  3689. )JM] Then go into ResEdit (I told you it was ugly!), open the Scrapbook and your
  3690. H`stack, find the picture resource, and copy and paste it into your stack. You can now execute the
  3691. LPictRsrcToFile command on the resource and the picture file will be created.
  3692. )Converting a Pict file to a Pict resource
  3693. /QTPict PictFileToRsrc, fileName [,resourceName]
  3694. HfThis will take the named pict file and convert it into a resource in the stack. You can specify a name
  3695. Afor the resource, or the file name (minus the path) will be used.
  3696. *&<Getting the Screen Depth of the screen the Card Window is On
  3697.     Helvetica
  3698. QuickTime XCMDs
  3699. 12/21/94
  3700. page 
  3701. Geneva
  3702. QTPict GetScreenDepth
  3703. get the result
  3704. Times
  3705. HYThe result will contain the pixel depth of the deepest screen that the card window spans.
  3706. Getting a File's Size
  3707. QTPict FileSize,fileName
  3708. get the result
  3709. HdThe result will contain the size in bytes of the file specified. Useful in determining the amount of
  3710. 2compression the CompressPict command accomplished.
  3711. *&0A Few Convenient But Dangerous Clipping Commands
  3712. QTPict ClipTo, <rect>
  3713. QTPict DiffClip, <rect>
  3714. QTPict UnionClip, <rect>
  3715. H`These are used to futz with the clipping region of the card window. You may wish to use these in
  3716. cconjunction with DisplayPict or Direct movies, since the image they put on the screen can be erased
  3717. ^at the whim of HyperCard when the card gets updated. ClipTo specifies a rectangle to which you
  3718. Zwant the card clipped.  DiffClip will remove the given rectangle from the clipping region.
  3719. _UnionClip will add the given rectangle to the clipping region. For example, you might display a
  3720. dpretty little color picture on your card with a background button behind it.  If you use DiffClip to
  3721. ^remove the area of the pict from the clipping region of the card, then the color pict will not
  3722. Xdisappear when you move from card to card. But be careful 
  3723.  if you decide to suddenly go
  3724. felsewhere, such as to the home card, the clipping region is still in the odd state you set it to.  You
  3725. bmay wish as a safety device, to have the following script called from the closeStack script of any
  3726. &stack that plays with the clip region.
  3727. on AllClip
  3728. QTPict ClipTo, 
  3729. 0,0,1280,1280
  3730. end AllClip
  3731. Another convenient routine is:
  3732.     on NoClip
  3733. QTPict ClipTo, "0,0,0,0"
  3734. end NoClip
  3735.     Helvetica
  3736. QuickTime XCMDs
  3737. 12/21/94
  3738. page 
  3739. XCMD Version Information
  3740. Times
  3741. YTo find out what version of each XCMD you have, you can call the XCMD with the first (and
  3742. only) parameter being 
  3743. version
  3744. )*>. The value of the result will have the date when the XCMD was
  3745. HUbuilt. For QTMovie,  QTRecordMovie, and QTEditMovie, you can also ask for the version
  3746. !property of the window. Examples:
  3747. Geneva
  3748. QTPict version
  3749. put the result into whatVersion
  3750. convert whatVersion to seconds
  3751. @if whatVersion < neededVersion then answer "get a newer version"
  3752. L-- neededVersion is a saved value that has already been converted to seconds
  3753. *$)answer the version of window "live video"
  3754.     Helvetica
  3755. QuickTime XCMDs
  3756. 12/21/94
  3757. page 
  3758. Appendix
  3759. Times
  3760. XThis is a comprehensive list of properties and messages for the QuickTime XCMDs QTMovie,
  3761. 5QTEditMovie, QTRecordMovie, and QTPict as of 4/26/94.
  3762. QTMovie
  3763. Forms
  3764. GQTMovie OpenMovie,<window type> or Direct,<fileName>,<loc>[,options...]
  3765. %QTMovie Direct,<movieID>[,options...]
  3766. OpenMovie Options
  3767. Badge -- show badge
  3768. @BorderWidth,width -- for MovieWDEF window; set borderwidth (0-6)
  3769. *ClipTo,rect -- Clip to specified rectangle
  3770. 1CloseOnFinish -- close movie window when finished
  3771. ECmdKeyDraggable -- for MovieWDEF window; allow drag with cmd key down
  3772. HDirectWindow,wName -- Alternate window for the Direct movie to appear in
  3773. MDocumentLayer -- Force window into document layer (defaults to palette layer)
  3774. 6DontPaintWhite -- Don't erase window before displaying
  3775. 8FastIdle -- Don't return from idle until OS event occurs
  3776. /Invisible -- Start with the movie window hidden
  3777. Loop -- Start in Loop mode
  3778. 1LoadIntoRAM -- Load movie into RAM before playing
  3779. Mute -- Start Muted
  3780. 'NoController -- show with no controller
  3781. &Palindrome -- Start in Palindrome mode
  3782. Paused -- start paused
  3783. 8SeeAllFrames -- Show all frames while playing (no audio)
  3784. 0ShowGrowBox -- show movie grow box in controller
  3785. ShowPoster -- Show movie poster
  3786. MUseCustomCLUT -- use Movie's color table, if appropriate for the screen depth
  3787. Direct Options
  3788. $Dispose -- Call when done with movie
  3789. (Get,<propName> -- Call to get a property
  3790. 7Idle -- Must be called in Idle routine for movie to run
  3791. 8MouseDown,<global point> -- Call from  mouseDown handler
  3792. ?in button behind controller  to use controller in direct movies
  3793. y2PlotPath -- Plot Frames along path specified above
  3794. /Set,<propName>,<value>-- Call to set a property
  3795. WindowTypes
  3796.     AltDialog
  3797. Borderless
  3798. Dialog
  3799. Document
  3800. ;MovieWDEF -- Window shape determined by movie's clip region
  3801. Plain
  3802. TallWindoid
  3803. Windoid
  3804. !<wdef id> -- use your own wdef id
  3805.     Helvetica
  3806. QuickTime XCMDs
  3807. 12/21/94
  3808. page 
  3809. Times
  3810. Set Properties
  3811. 5ActiveMovie <movieID> -- play previously queued movie
  3812. 'AudioLevel <0-256> -- sets movie volume
  3813. 3Badge <true/false> -- show badge when no controller
  3814. CBackColor <rgb triplet> -- Set background color of movie controller
  3815. HBitMapClip <rect> -- Use bit map from card at rect to set clip of window
  3816. ICacheMovie <true/false> -- set movie hint that keeps movie data in memory
  3817. 1ClipRect <rect> -- set movie's clipping rectangle
  3818. @CloseOnFinish <true/false> -- close window when end of movie hit
  3819. @CopyFrameToFile <file name> -- create pict file of current frame
  3820. ACopyPosterToFile  <file name> -- create pict file of poster frame
  3821. BCopyPreviewToFile <file name> -- create pict file of preview frame
  3822. ICurrGroupLayer <layerNum> -- set layer of all tracks in currTrack's group
  3823. ECurrTime <time in movie's scale> -- positions movie at specified time
  3824. 5CurrTrackAudioLevel <0-256> -- set currTrack's volume
  3825. 2CurrTrackLayer <layerNum> -- set currTrack's layer
  3826. 6CurrTrackNum <trackNum> -- set "currTrack" to trackNum
  3827. 8CursorMsg <handler name> -- call when cursor over window
  3828. <DeleteQueuedMovie <movieID> -- delete queued movie from list
  3829. ADisableGroup <trackNum> -- Disable all tracks in trackNum's group
  3830. 1DisableTrack <trackNum> -- Disable track trackNum
  3831. EDontInvalOnClose <true/false> -- Don't update card when window closed
  3832. CDontPaintWhite <true/false> -- Don't erase window before displaying
  3833. FEnableGroup <trackNum> -- Enable appropriate track in trackNum's group
  3834. JEnableKeys <true/false> -- Allow keyboard movie control when window active
  3835. /EnableTrack <trackNum> -- Enable track trackNum
  3836. 5FastIdle <true/false> -- turn on the fast idle option
  3837. /FindFlags <flags> -- set flags for FindNextText
  3838. GFindString <text string> -- set string to find for FindNextText command
  3839. CForeColor <rgb triplet> -- Set foreground color of movie controller
  3840. CHiliteColor <rgb triplet> -- set hilite color for HilteText command
  3841. "Loop <true/false> -- set loop mode
  3842. ?MouseDownMsg <handler name> -- call when mouse clicked in movie
  3843. )MovieRect <rect> -- set movie's rectangle
  3844. 3MovieLoc <pt> -- set movie's loc within window/card
  3845. IMovieControlMsg <handler name> -- call when certain movie controls change
  3846. 3MovieLanguage <region code> -- set movie's language
  3847. #Mute <true/false> -- mute the movie
  3848. 3NewMovieFile <fileName> -- play new movie in window
  3849. ?Palindrome <true/false> -- set palindrome (back and forth) mode
  3850. MPictCreator <OSType> -- file creator type for CopyToFile cmds Default: 'ppxi'
  3851. LQueuedMovie <fileName>  -- place movie file in queue (movieID in the result)
  3852. LRate <fixed num> -- set movie play rate (takes effect when movie is playing)
  3853. KReplaceTime <time> -- start point for new movie in NewMovieFile/ActiveMovie
  3854. BStatusMsg <handler name> -- call when error detected while playing
  3855. QSearchType -- 0: search one track; 1: search enabled tracks; 2: search all tracks
  3856. ESeeAllFrames <true/false> -- ensure all frames shown (audio shut off)
  3857. 2SegmentEnd <time> -- set end time for segment play
  3858. 5SegmentPlay <true/false> -- go into segment play mode
  3859. 6SegmentStart <time> -- set start time for segment play
  3860. HTextHiliteBegin <offset> -- set text offset start for HiliteText command
  3861. DTextHiliteEnd <offset> -- set text offset end for HiliteText command
  3862. >TextHiliteTime <time> -- set movie time for HiliteText command
  3863. NTextSampleTime <time> -- set time for CurrTextSample (-1: use curr movie time)
  3864.     Helvetica
  3865. QuickTime XCMDs
  3866. 12/21/94
  3867. page 
  3868. Times
  3869. y>TimedCallBack <handler name && time> -- call when time reached
  3870. LUseHiliteColor <true/false> -- set back to false to use default hilite color
  3871. ,Visible <true/false> -- show hide the window
  3872. HWindowBorderColor <rgb triplet> -- Set border color for MovieWDEF window
  3873. 8WindowCloseMsg <handler name> -- call when window closed
  3874. 3WindowLoc <local pt> -- set new position for window
  3875. IWindowName <name> -- rename the movie window (default is movie file name)
  3876. AWindowRect <local rect> -- set new position/size for movie window
  3877. Direct Only Properties
  3878. IAbortPlotPathOnClick <true/false> -- Abort PlotPath when mouse is clicked
  3879. ;EraseOnMove <true/false> -- Erase old when new position set
  3880. 7PathStartPt <pt> -- starting point for PlotPath command
  3881. 0PathEndPt <pt> -- end point for PlotPath command
  3882. =PathStartTime <time> -- movie start time for PlotPath command
  3883. 9PathEndTime <time> -- movie end time for PlotPath command
  3884. <PathNumFrames <value> -- # of frames to display for PlotPath
  3885. 9PathPlayFrames <true/false> -- play movie during PlotPath
  3886. Messages
  3887. IBringGroupToFront -- Bring all tracks in currTrack's group to front layer
  3888. 3BringTrackToFront -- Bring currTrack to front layer
  3889. KCancelMessage -- Call from MovieControl handler to cancel controller action
  3890. ,CopyFrame -- Copy current frame to clipboard
  3891. ,CopyPoster -- Copy poster frame to clipboard
  3892. TFindNextText -- Find text specified by Find properties (the result: time dur offset)
  3893. JFindNextTextAgain -- Find text again (from last found track, time, offset)
  3894. +GoNextKeyFrame -- Advance to next key frame
  3895. /GoPrevKeyFrame -- Go back to previous key frame
  3896. GoToBack -- Send window to back
  3897. !GoToFront -- send window to front
  3898. +HideController -- Hide the movie controller
  3899. =HiliteText -- Hilte text specified by Hilite properties above
  3900. .Idle -- Keeps movie going from inside a script
  3901. 7LoadSegIntoRAM -- Load SegmentStart/SegmentEnd into RAM
  3902. KPassMouseDown -- Call from MouseDown handler to let controller handle click
  3903. APasteBitMapClip -- Set Clip of movie based on bitmap on clipboard
  3904. Pause -- Pause the movie
  3905. +Play -- Start movie playing at current rate
  3906. 7Reverse -- Start movie playing at opposite current rate
  3907. /SendTrackToBack -- Send currTrack to back layer
  3908. ESendGroupToBack -- Send all tracks in currTrack's group to back layer
  3909. AShowController -- Show the movie controller (works in Direct now)
  3910. FShowMovieInfo -- Display Standard QuickTime Movie Info Dialog (QT 2.0)
  3911. #ShowPoster -- Show the poster frame
  3912. -StepFwd -- Step Forward one frame (and pause)
  3913. .StepRev -- Step Backward one frame (and pause)
  3914. Get Properties
  3915. %AbortPlotPathOnClick -- default: true
  3916. "AudioLevel -- current movie volume
  3917. Badge -- default: false
  3918. BackColor -- default: white
  3919. !Cliprect -- the movie's clip rect
  3920.     Helvetica
  3921. QuickTime XCMDs
  3922. 12/21/94
  3923. page 
  3924. Times
  3925. CloseOnFinish -- default: false
  3926. CurrTime -- current movie time
  3927. CurrTrackNum -- default: 0
  3928. BCurrTrackType -- the type (eg 'soun', 'vide', 'text') of currTrack
  3929. +CurrTrackLayer -- layer number of currTrack
  3930. -CurrTrackAudioLevel -- get currTrack's volume
  3931. HCurrTextSample -- text of currTrack (or first text track) at time set by
  3932. (TextSampleTime (-1: use curr movie time)
  3933. CursorMsg -- default: nil
  3934.  DontPaintWhite -- default: false
  3935. Duration -- duration of movie
  3936. FastIdle -- default: false
  3937. /FileSize -- the size of the movie file in bytes
  3938. ForeColor -- default: black
  3939. HasController -- default: true
  3940. Loop -- default: false
  3941. MouseDownMsg -- default: nil
  3942. 1MovieController -- actual movie controller handle
  3943. MovieControlMsg -- default: nil
  3944. "MovieHandle -- actual movie handle
  3945. 0MovieLanguage -- the movie's current region code
  3946. BMovieLanguages -- list of all region codes found in movie's tracks
  3947. )MovieLoc -- movie's loc within the window
  3948. MovieRect -- movie's rect
  3949. $MovieScale -- the movie's time scale
  3950. Mute -- default: false
  3951. +NumTracks -- number of tracks in this movie
  3952. Palindrome -- default: false
  3953. !PathStartPt -- what you set above
  3954. PathEndPt -- what you set above
  3955. #PathStartTime -- what you set above
  3956. !PathEndTime -- what you set above
  3957. #PathNumFrames -- what you set above
  3958.  PathPlayFrames -- default: false
  3959. Rate -- movie's current rate
  3960. SeeAllFrames -- default: false
  3961. SegmentEnd -- default: -1
  3962. SegmentStart -- default: -1
  3963. StatusMsg -- default: nil
  3964. TimedCallback -- default: nil
  3965. DVideoCompressorInfo -- list of info for currTrack (or 1st vid track)
  3966. &Version -- Date XCMD was last compiled
  3967. WindowCloseMsg -- default: nil
  3968. (WindowLoc -- window location (global pt)
  3969. $Windowname -- the name of the window
  3970. "WindowRect -- window rect (global)
  3971.     Helvetica
  3972. QuickTime XCMDs
  3973. 12/21/94
  3974. page 
  3975. Times
  3976. QTEditMovie
  3977. 4EditMovie <fileName>,<windowType>,<loc>[,options...]
  3978. Options
  3979. 0NewMovie -- create new empty movie file fileName
  3980. "Invisible -- hide window initially
  3981. Set Properties:
  3982. DActiveSegment <beginTime && endTime> -- set the active movie segment
  3983. GAddToDataFork <true/false> -- make movie DOS compatible in FlattenMovie
  3984. MActiveTracksOnly <true/false> -- omit inactive tracks in FlattenMovie command
  3985. @AutoSave <true/false> -- save changes when edit window is closed
  3986. TBitMapMovieClip <rect> -- use bit map on card at rect to set movie's clipping region
  3987. QBitMapTrackClip <rect> -- use bit map at rect to set currTrack's  clipping region
  3988. ICurrGroupLayer <layerNum> -- set layer of all tracks in currTrack's group
  3989. @CurrSelection <beginTime && endTime> -- set the  movie selection
  3990. <CurrTrackLanguage <region code> -- set language of currTrack
  3991. 3CurrTrackLayer <layerNum> -- set layer of currTrack
  3992. =CurrTrackQuality <quality> -- set quality value for currTrack
  3993. :CurrTrackNum <trackNum> -- set the "currTrack" to trackNum
  3994. >CurrTrackRect <rect> -- set the rectangle of the current track
  3995. )CurrTime <time> -- set current movie time
  3996. =DestMovie <name> -- set up file name for FlattenMovie command
  3997. 1DisableTrack <trackNum> -- disable track trackNum
  3998. =DisplayTracks <true/false> -- show view of tracks below movie
  3999. FDisplayGroupNums <true/false> -- show group numbers (arbitrary values)
  4000. 3DisplayTrackNums <true/false> -- show track numbers
  4001. IDontDimController <true/false> -- dont dim movie controller when inactive
  4002. LDontInterleave <true/false> -- data interleave flag for FlattenMovie command
  4003. /EnableTrack <trackNum> -- enable track trackNum
  4004. :FontName <name> -- font to use for AddText/AddSelectedText
  4005. ?FontSize <size> -- font size to use for AddText/AddSelectedText
  4006. ;FontFace <flags> -- face to use for AddText/AddSelectedText
  4007. 9GrabDoneMsg <handler> -- call when audio grab is complete
  4008. ?GroupType <OSType> -- set type for GroupEnabledTypedTracks call
  4009. 8Growable <true/false> -- show movie controller grow icon
  4010. EHiliteColor <rgb triplet> -- hilite color for AddText calls/AddHilite
  4011. TJustification <just> -- justfication for AddText calls (0: left, 1:center, -1:right)
  4012. #Loop <true/false> -- sets loop mode
  4013. 7MovieClipRect <rect> -- set clipping rectangle on movie
  4014. 3MovieLanguage <region code> -- set movie's language
  4015. CPlayMovieWhileGrabbing <true/false> -- play movie during audio grab
  4016. 6PosterTime <time> -- set the poster time for the movie
  4017. DPreviewDuration <time dur> -- set the preview duration for the movie
  4018. >PreviewTime <time> -- set the preview start time for the movie
  4019. ;ScrollDelay <time> -- scroll delay to use for scrolled text
  4020. ?SegmentPlayMode <true/false> -- play only the current selection
  4021. 6SlideTrack <ticks> -- slide currTrack in time by ticks
  4022. KSlideTrackTime <time> -- slide currTrack by specified time (in movie scale)
  4023. NSoundDuration <ticks or "movieLength"> -- sets duration of sound to be grabbed
  4024. ESoundName <name> -- set up resource name for AddSoundResource command
  4025.     Helvetica
  4026. QuickTime XCMDs
  4027. 12/21/94
  4028. page 
  4029. Times
  4030. yOSoundStart <ticks> -- system time to start grab for GrabAudioNow(0: don't wait)
  4031. NSoundEnd <ticks> -- system time to stop grabbing audio (0: use sound duration)
  4032. KSoundPlayThru <true/false> -- play sound thru Mac speaker during audio grab
  4033. PSoundRate <"11K" or "22K" or "44K" or 0> -- set audio grab rate (0: use default)
  4034. :Stereo <true/false> -- grab stereo sound during audio grab
  4035. FStopGrabbingOnClick <true/false> -- halt audio grab when mouse clicked
  4036. 7Text <text string> -- set up string for AddText command
  4037. FTextBackColor <rgb triplet> -- text background color for AddText calls
  4038. 8TextBox <rectangle> -- text box to use for AddText calls
  4039. ITextFieldName <name> -- HyperCard field to get text from for AddFieldText
  4040. ?TextFlags <flags> -- text display flags to use in AddText calls
  4041. ;TextForeColor <rgb triplet> -- text color for AddText calls
  4042. QTextHiliteBegin <offset> -- offset for AddText calls/AddHilite (-1 for no hilite)
  4043. OTextHiliteEnd <offset> -- offset for AddText calls/AddHilite (-1 for no hilite)
  4044. 9TextTrackRect <rect> -- set rect for AddTextTrack command
  4045. ;TrackClipRect <rect> -- set clipping rectangle on currTrack
  4046. OTrackShiftTicks <ticks> -- number of ticks to slide tracks when stepper clicked
  4047. ITrackShiftTime <time> -- amount in movie scale time to slide when clicked
  4048. SUseHiliteColor <true/false> -- use the HiliteColor specified (use default if false)
  4049. KUseTextBox <true/false> -- use the TextBox specified (use default if false)
  4050. 1Visible <true/false> -- show hide the edit window
  4051. 3WindowCloseMsg <handler> -- call when window closed
  4052. ,WindowName <name> -- set name of edit window
  4053. Messages
  4054. 1Add -- Add current clipboard to movie in parallel
  4055. =AddFieldText -- Add a text sample from field in TextFieldName
  4056. JAddHilite -- Use text hilite properties to add hilite sample to text track
  4057. KAddScaled -- Add current clipboard to movie in parallel scaled to selection
  4058. IAddSelectedText -- Add text sample from currently selected HyperCard text
  4059. EAddSoundResource -- Add sound track from snd resource (see SoundName)
  4060. /AddText -- Add a text sample from Text property
  4061. @AddTextTrack -- Use TextTrackRect property to add new text track
  4062. IBringGroupToFront -- Bring all tracks in currTrack's group to front layer
  4063. 3BringTrackToFront -- Bring currTrack to front layer
  4064. *Clear -- Clear the current movie selection
  4065. 1Copy -- Copy current movie selection to clipboard
  4066. 0CopyFramePict -- Copy current frame to clipboard
  4067. ,CopyTrack -- Copy currTrack to the clipboard
  4068. ECopyTrackSelection -- Copy selected portion of currTrack to clipboard
  4069. ,CutCurrFrame -- Cut current frame from movie
  4070. 6Cut -- Cut current movie selection (copy on clipboard)
  4071. -CutTrack -- Cut currTrack (copy on clipboard)
  4072. JCutTrackSelection -- Cut selected portion of currTrack (copy on clipboard)
  4073. -FlattenMovie -- Create stand alone movie file
  4074. FGrabAudioSoon -- Prepare to grab audio (must call before GrabAudioNow)
  4075. 6GrabAudioNow -- Grab audio sample to a new sound track
  4076. EGroupEnabledTypedTracks -- Group all enabled tracks of type GroupType
  4077. ;GroupAllEnabledTracks -- Group all currently enabled tracks
  4078. 4Paste -- Paste current clipboard into movie (insert)
  4079. Pause -- Pause the movie
  4080. Play -- Play the movie
  4081. 5SaveChanges -- Save changes made so far to movie file
  4082. OSelectMovieAlternates -- Force Quicktime to select tracks from alternate groups
  4083.     Helvetica
  4084. QuickTime XCMDs
  4085. 12/21/94
  4086. page 
  4087. Times
  4088. y/SendTrackToBack -- Send currTrack to back layer
  4089. ESendGroupToBack -- Send all tracks in currTrack's group to back layer
  4090. DUndo -- Undo the last change to the movie (works for most commands!)
  4091. 8UnGroupTracks -- Ungroup all tracks in currTrack's group
  4092. Get Properties
  4093. AddToDataFork -- default: false
  4094. GActiveSegment -- retrieve movie's active segment (startTime && endTime)
  4095. "ActiveTracksOnly -- default: false
  4096. ;CurrSelection -- The current movie selection (begin && end)
  4097. "CurrTime -- the current movie time
  4098. <CurrTrackLanguage -- the language (region code) or currTrack
  4099. /CurrTrackLayer -- the layer number of currTrack
  4100. 2CurrTrackNum -- number of currently selected track
  4101. 1CurrTrackQuality -- the quality value of curTrack
  4102. &CurrTrackRect -- the rect of currTrack
  4103. BCurrTrackType -- the type (eg 'soun', 'vide', 'text') of currTrack
  4104. DestMovie -- default: nil
  4105. DisplayTracks -- default: false
  4106.  DontInterleave -- default: false
  4107. =Duration -- The duration of the movie (in movie's time scale)
  4108. FontFace -- default: plain
  4109. FontName -- default: App Font
  4110. FontSize -- default: 12
  4111. GrabDoneMsg -- default: nil
  4112. HiliteColor -- default: white
  4113. "Justification -- default: 0 (left)
  4114. )MovieChanged -- true if movie has changed
  4115. )MovieLanguage -- movie's current language
  4116. MovieRect -- movie's rectangle
  4117. MovieName -- movie's name
  4118. $MovieScale -- the movie's time scale
  4119. .NumTracks -- the number of tracks in the movie
  4120. (PlayMovieWhileGrabbing -- default: false
  4121. %PosterTime -- the movie's poster time
  4122. /PreviewDuration -- the movie preview's duration
  4123. -PreviewTime -- the movie preview's start time
  4124. ScrollDelay -- default: 0
  4125. SoundDuration -- default: 0
  4126. SoundStart -- default: 0
  4127. SoundEnd -- default: 0
  4128. SoundName -- default: nil
  4129. Text -- default: nil
  4130. TextBackColor -- default: white
  4131. TextFlags -- default: 0
  4132. TextForeColor -- default: black
  4133. &Version -- date XCMD was last compiled
  4134. WindowCloseMsg -- default: nil
  4135. QTRecordMovie
  4136. Forms
  4137. LQTRecordMovie VideoInputList -- list of digitizer video inputs -> the result
  4138. 7QTRecordMovie CodecList -- list of codecs -> the result
  4139.     Helvetica
  4140. QuickTime XCMDs
  4141. 12/21/94
  4142. page 
  4143. Times
  4144. yMQTRecordMovie DepthList,codecNumber -- list of depths for codec -> the result
  4145. 5QTRecordMovie <windowName>,<windowType>,<windowRect>,
  4146. ,<growable>,<connectToAudio>,<inputStandard>,
  4147. <video input>[,options...]
  4148. /WindowType -- standard window types or wdef id#
  4149. 0WindowRect -- rect of window (local coordinates)
  4150. BGrowable -- <true/false> allow drag click in corner to grow window
  4151. FConnectToAudio -- <true/false> connect to audio digitizer (if present)
  4152. %InputStandard -- (ntsc,pal, or secam)
  4153. DVideoInput -- eg: "Composite 1", "SVideo 2" (Get from VideoInpuList)
  4154. Options:
  4155. $"Invisible" -- hide window initially
  4156. Set Properties
  4157. OAppendGrab <true/false> -- Append grabbed frames to file (else delete old file)
  4158. 5AudioLevel <0-256> -- audio level for sound play thru
  4159. >BeepOnGrab <true/false> -- beep when GrabAnotherFrame complete
  4160. BlackLevel <0-65535>
  4161. Brightness <0-65535>
  4162. :CodecType <OSType> -- compression type (eg 'rpza', 'jpeg')
  4163. BCodecNumber <num> -- position from CodecList (instead of codeType)
  4164. Contrast <0-65535>
  4165. 7CropRect <rect> -- rect within window to crop the video
  4166. ECropWindow <true/false> resize, move window to just fit cropped video
  4167. NDeleteFile <true/false> -- delete prev file before grabbing (except on append)
  4168. 8FileName <name> -- name of output file for grabbed movie
  4169. :FrameDifferenced <true/false> -- generate video key frames
  4170. 8FrameRate <fps> -- frames per second for resulting movie
  4171. BGrabCompleteMsg <handler name> call when GrabAnotherFrame complete
  4172. NGrabSize <point> -- Size at which to grab video (will be saved at window size)
  4173. EGrabToRAM <true/false> -- Do live grab directly to RAM (else to disk)
  4174. Hue <0-65535>
  4175. EKeepVideoOn <true/false> -- leave video on when HyperCard deactivated
  4176. LMovieCreator <OSType> -- creator type for output movie file. Default: 'tvod'
  4177. 6PictureQuality <0-1023> -- compression spatial quality
  4178. 6MotionQuality <0-1023> -- compression temporal quality
  4179. KMovieDepth <depth> -- set depth to grab (1,2,4,8,16,32) (gray: 33,34,36,40)
  4180. :KeyFrameRate <rate> -- minimum distance between key frames
  4181. FMaxGrabTime <seconds> -- maximum time (in seconds) for live video grab
  4182. CMaxGrabTicks <ticks> -- maximum time (in ticks) for live video grab
  4183. RPictCreator <OSType> -- creator type for file created by GrabPict. Default: 'ppxi'
  4184. RRestoreSoundPrefs <prefs name> -- Restore saved sound settings from named resource
  4185. RRestoreVideoPrefs <prefs name> -- Restore saved video settings from named resource
  4186. Saturation <0-65535>
  4187. Sharpness <0-65535>
  4188. NSaveSoundPrefs <prefs name> -- Save current sound settings into named resource
  4189. NSaveVideoPrefs <prefs name> -- Save current video settings into named resource
  4190. AShowPrevFrameWindows <true/false> -- show prev two frames grabbed
  4191. HSoundPlayThruPreview <true/false> -- play sound thru during preview mode
  4192. ASoundPlayThruRecord <true/false> -- play sound thru during record
  4193. QSoundRate <"11K" or "22K" or "44K" or 0> -- audio rate for live grab (0: default)
  4194. +Stereo <true/false> -- capture stereo sound
  4195. UStopGrabbingOnClick <true/false> -- stop live grab when mouse clicked (default: true)
  4196. JThrottleLiveGrab <true/false> -- attempt to limit frame rate on live grabs
  4197.     Helvetica
  4198. QuickTime XCMDs
  4199. 12/21/94
  4200. page 
  4201. Times
  4202. yLVideoCard <input> -- switch to specified digitizer card (from VideoCardList)
  4203. @VideoInput <input> -- connect to new input (from VideoInputList)
  4204. 6VideoRect <rect> -- adjust digitizer's video rectangle
  4205. .Visible <true/false> -- show hide video window
  4206. 6WindowCloseMsg <handller name> call when window closed
  4207. /WindowSize <point> -- new size for video window
  4208. WhiteLevel <0-65535>
  4209. Messages
  4210. (AudioOn -- Tuen sound channel's audio on
  4211. *AudioOff -- Tuen sound channel's audio off
  4212. JCutCurrFrame -- if PlayMovie was sent then use this to cut unwanted frames
  4213. !DoLiveGrab -- Start live grab now
  4214. BFinishControlledGrab -- Close movie started by StartControlledGrab
  4215. AGrabOneFrame -- Grab frame, compress it,  and add it to the movie
  4216. EGrabPict -- Grab Current image, compress it, and save to Picture file
  4217. >Idle -- Send if looping in script during record to show frames
  4218. 7LiveGrabPrep -- Get ready to do a live video/audio grab
  4219. 3ReleaseSound -- Disconnect from the audio digitizer
  4220. 9ResetVideoRect -- reset digitizer's video rect to default
  4221. LShowController -- During Controlled grab show movie controller to play movie
  4222. 4ShowSoundDialog -- Bring up QT standard audio dialog
  4223. 4ShowVideoDialog -- Bring up QT standard video dialog
  4224. 8StartControlledGrab -- Prepare for calls to GrabOneFrame
  4225. ,StartSound -- Connect to the audio digitizer
  4226. 9UseCropForVideoRect -- set video rect to current cropRect
  4227. VideoOn -- unfreeze the video
  4228. VideoOff -- freeze the video
  4229. Get Properties
  4230. -BlackLevel -- the current black level setting
  4231. ,Brightness -- the current brightness setting
  4232. 4CodecList -- list of available compressors (by name)
  4233. ;CodecNumber -- Default: codecNumber corresponding to 'rpza'
  4234. 0CodecType -- Default: 'rpza' (Apple Video Codec)
  4235. 4CodeTypes -- list of available compressors (by type)
  4236. (Contrast -- the current contrast setting
  4237. 6CropRect -- the current crop rect for the video window
  4238. DeleteFile -- default: true
  4239. !FileName -- Default: "Temp Movie"
  4240. FrameRate -- Default: 10
  4241. &FrameDifferenced -- what you set above
  4242. GrabCompleteMsg -- Default: nil
  4243. 8GrabSize -- Default: "0,0" -> grab at normal window size
  4244. GrabToRAM -- what you set above
  4245. .HighQuality -- the standard high quality value
  4246. Hue -- the current hue setting
  4247. LiveGrabMsg -- Default: nil
  4248. ,LowQuality -- the standard low quality value
  4249. 2MaxQuality -- the maximum compresion quality value
  4250. ?MaxRect -- the maximum video rect you can set for the digitizer
  4251. 2MinQuality -- the minimum compresion quality value
  4252. )MotionQuality -- Default: codec dependent
  4253. &MovieDepth -- Default: codec dependent
  4254.     Helvetica
  4255. QuickTime XCMDs
  4256. 12/21/94
  4257. page 
  4258. Times
  4259. y2NormalQuality -- the standard normal quality value
  4260. *PictureQuality -- Default: codec dependent
  4261. ,Saturation -- the current saturation setting
  4262. *Sharpness -- the current sharpness setting
  4263. /SoundRate -- Default: Audio digitizer dependent
  4264. &ThrottleLiveGrab -- what you set above
  4265. &Version -- date XCMD was last compiled
  4266. 8VideoInputList -- list of video inputs for the digitizer
  4267. >VideoCardList -- list of available video video digitizer cards
  4268. -Videorect -- the current digitizer video rect
  4269. /VideoOn -- whether video is currently on or not
  4270. WindowCloseMsg -- Default: nil
  4271. 1WindowSize -- the curent size of the video window
  4272. -WhiteLevel -- the current white level setting
  4273. QTPict
  4274. Forms
  4275. 1QTPict CompressPict -- Compress specified picture
  4276. &PictName -- name of pict file/resource
  4277. Source -- "file" or "resource"
  4278. )Quality -- spatial quality value (0-1023)
  4279. 'Codec -- Codec type (eg: 'jpeg', rpza')
  4280. cTQTPict DisplayPict -- Splat picture onto HyperCard card (rect of pict -> the result)
  4281. &PictName -- name of pict file/resource
  4282. 4Location -- point or rect on card to display picture
  4283. Source -- "file" or "resource"
  4284. ,"ClipTo",rect -- rect in which to clip image
  4285. 9"ThumbNail" -- Display thumbnail (for Pict or Movie file)
  4286. I"ForceOffscreen" -- Force pict to be buffered offscreen before displaying
  4287. cSQTPict PictBounds -- Return rect of pict in the result (same params as DisplayPict)
  4288. AQTPict PictRsrcToFile -- convert picture resource to picture file
  4289. RsrcName
  4290. FileName
  4291. cAQTPict PictFileToRsrc -- convert picture file to picture resource
  4292. FileName
  4293. RsrcName
  4294. c/QTPict CodecNames -- Return list of codec names
  4295. >QTPict CodecTypes -- Return list of available Codecs (by type)
  4296. 5QTPict FileSize -- Return byte size of specified file
  4297. FileName
  4298. c0QTPict ClipTo -- Set clip rect of Hypercard card
  4299. ClipRect
  4300. c<QTPict DiffClip -- subtract rect from clip of Hypercard card
  4301. ClipRect
  4302. c6QTPict UnionClip -- add rect to clip of Hypercard card
  4303. ClipRect
  4304. c7QTPict GetScreenDepth -- Return depth of current screen
  4305. UQTPict ScreenBitsToPictFile -- grabs whatever is on the screen at rect into pict file
  4306. FileName
  4307. M,D+76GJ5CL1<SET
  4308. A.*+GI
  4309. -=>819B3
  4310. `    <*]
  4311.     -*3/
  4312. xTP`P
  4313. '-0*    
  4314. ( ,6.
  4315.   @` 
  4316. M,D+76GJ5CL1<SET
  4317. A.*+GI
  4318. -=>819B3
  4319.   @8p
  4320.     -*3/
  4321.   @8p
  4322. '-0*    
  4323. ( ,6.
  4324. -3    temp.0001
  4325. Tim SchaaffR
  4326. ApplechaaffR
  4327. Microsoft Word
  4328. 3OFST
  4329. Geneva
  4330. Times
  4331.     Helvetica
  4332. rPREC
  4333. ~PRVS
  4334. &FNMS
  4335.